
Golang
文章平均质量分 52
墨痕诉清风
始于情,行于心。
展开
-
GO语言代码审计
最近一直有在学习GO语言,互联网上有许多关于基于GO语言搭建的网站的代码审计文章,但是GO语言本身的语言特性导致的错误或者BUG是最重要的。在这几年GO凭借它的多线程技术优势和垃圾回收机制特性以及多架构进行轻松编译,导致GO语言容错率极高,使其成为了嵌入式领域和物联网IOT设备项目的理想选择,而基于go语言的goroutines的简单性使之成为了GO语言搭建web网站的理想选择了,许多的第三方库也支持goroutines。而且内置的测试框架支持模糊匹配测试了,更是极大方便测试人员。原创 2024-07-23 11:53:48 · 1287 阅读 · 0 评论 -
go语言添加代理
【代码】go语言添加代理。原创 2024-03-08 17:31:50 · 481 阅读 · 0 评论 -
Go与C语言的互操作,import “C“的实例
除了原生类型外,我们还可以访问C中的自定义类型。原创 2023-06-27 10:43:09 · 1859 阅读 · 0 评论 -
golang 隐藏窗口
【代码】golang 隐藏窗口。原创 2023-06-26 19:04:34 · 844 阅读 · 0 评论 -
Golang验证信用卡号码是否有效
【代码】Golang验证信用卡号码是否有效。原创 2022-11-17 17:40:17 · 492 阅读 · 0 评论 -
Golang验证身份证号码是否有效
身份证校验码产生的规则如下所示: 将前面的身份证号码17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2;将这17位数字和系数相乘的结果相加;余数只可能有0、1、2、3、4、5、6、7、8、9、10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2,其中的X是罗马数字10;通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ;如果余数是10,身份证的最后一位号码就是2。原创 2022-10-27 16:41:02 · 1011 阅读 · 0 评论 -
golang 接口类型 interface 简介使用
但是,当实现了一个接收者是指针类型的方法,如果此时自动生成一个接收者是值类型的方法,原本期望对接收者的改变(通过指针实现),现在无法实现,因为值类型会产生一个拷贝,不会真正影响调用者。总结一下,鸭子类型是一种动态语言的风格,在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由它”当前方法和属性的集合”决定。当判定一种类型是否满足某个接口时,Go 使用类型的方法集和接口所需要的方法集进行匹配,如果类型的方法集完全包含接口的方法集,则可认为该类型实现了该接口。原创 2021-05-31 18:47:38 · 862 阅读 · 0 评论 -
Golang生成C动态库.so和静态库.a
注意:生成C可调用的so时,Go源代码需要以下几个注意。原创 2020-06-26 23:58:28 · 6479 阅读 · 1 评论 -
golang 字符串分割(分割字符串)
package mainimport ( "fmt" "strings")func main() { str := "-100 123 200" //指定分隔符 countSplit := strings.Split(str, " ") fmt.Println(countSplit) //指定分割符号,指定分割次数 countSplit...原创 2020-05-04 18:07:15 · 26412 阅读 · 7 评论 -
golang flag包(命令行参数解析)
flag 包实现了命令行参数的解析。1)flag.Xxx(),其中 Xxx 可以是 Int、String,Bool 等;返回一个相应类型的指针,如:第一个参数 :flag名称为flagname第二个参数 :flagname默认值为1234第三个参数 :flagname的提示信息返回的ip是指针类型,所以这种方式获取ip的值应该第一个参数 :接收flagname的实际值的第二个参数 :flag名称为flagname第三个参数 :flagname默认值为1234。原创 2020-05-03 20:42:00 · 6880 阅读 · 0 评论 -
golang 指针总结(与C/C++区别不大,就是不可以p+1偏移)
注意老司机,都知道,可以在C/C ++中队指针做计算,但是golang就不支持那样做了。原创 2020-05-03 18:38:01 · 1182 阅读 · 0 评论 -
golang 切片slice使用总结(动态数组、cap与len区别)
注意:首先要搞清楚容量和长度的区别容量是指底层数组的大小,长度指可以使用的大小容量的用处在哪?在与当你用 append 扩展长度时,如果新的长度小于容量,不会更换底层数组,否则,go 会新申请一个底层数组,拷贝这边的值过去,把原来的数组丢掉。也就是说,容量的用途是:在数据拷贝和内存申请的消耗与内存占用之间提供一个权衡。而长度,则是为了帮助你限制切片可用成员的数量,提供边界查询的。...原创 2020-05-03 17:27:53 · 3524 阅读 · 0 评论 -
golang 数组、指针数组、数组指针使用总结
package mainimport ( "fmt")func main() { //创建 at:=[6]int{} //下标赋值 ap:=[5]int{3:2}//下标3的值赋值为2 fmt.Println("ap[3]:", ap[3]) //遍历1 as := [3]int{1, 2, 3} for i, p := range as { ...原创 2020-05-03 16:56:59 · 2661 阅读 · 0 评论 -
golang strconv包(类型转换、保留小数位)
package mainimport ( "fmt" "reflect" "strconv")func main() { vbool := false vint := 0-12345 vuint := 123456 vfloat := 123.456 vstring := "2019" //判断变量类型,int To string fmt.Println(ref...原创 2020-05-03 15:10:10 · 4005 阅读 · 0 评论 -
golang map使用总结
创建删除增加遍历原创 2020-05-03 13:32:26 · 320 阅读 · 0 评论 -
golang 生成随机数
package mainimport ( "time" "math/rand" "fmt")func main() { rand.Seed(time.Now().UTC().UnixNano()) fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100))}原创 2020-05-02 21:36:49 · 652 阅读 · 0 评论 -
Golang make chan 第二个参数(size)
指出该值在同一时刻最多可以容纳 size 个元素值。如果我们发送给该通道的元素值未被取走,那么该通道最多可以暂存(或者说缓冲)size 个元素值。当发送第size +1个元素值后, 会造成当前Goroutine的堵塞(在chan原创 2020-05-02 21:16:25 · 2194 阅读 · 0 评论 -
golang操作mysql数据库(Go-SQL-Driver/MySQL)
如果n不设置默认为2,小于等于0表示不留闲置连接,如果新设的maxidleconns大于maxopenconns,那么前者会减小以符合后者的值。如果n不设置默认为0,小于等于0表示没有限制,如果新设的maxopenconns小于maxidleconns,那么后者会减小以符合前者的值。方式二、预备陈述(mysql高并发工作时,此方法会产生过多连接出现性能问题)同一个事务中只产生一个连接,预备陈述在高并发时不会有性能问题。建立数据库school和四张表并插入一些数据。方法一、对于可为空的字段可以,如下处理。原创 2020-04-28 19:03:19 · 2777 阅读 · 1 评论 -
golang Println、Printf、Sprintf的区别
【代码】golang Println、Printf、Sprintf的区别。原创 2020-04-24 23:00:04 · 4402 阅读 · 0 评论 -
Golang通道(chan,协程交互数据)
通道(channel)是用来传递数据的一个数据结构。通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符原创 2020-02-11 18:19:50 · 3387 阅读 · 1 评论 -
Linux下编译运行Go程序
【代码】Linux下编译运行Go程序。原创 2020-02-10 11:54:44 · 3794 阅读 · 0 评论 -
golang中package的4种导入方式
当我们import一个包的时候,它里面的所有init()函数都会被执行,但是有时候我们并不真正需要使用这些包,仅仅是希望它里面的init()函数被执行,这个时候,就可以使用下划线import了。点import就是在import 的包前面加个".", 这个导入方式,在使用相应的包的函数或者变量的时候,可以省略包名。有时候可能包的名字很长或者不容易记忆,然后你可以给这个包起个别名(比如短一点啊或者容易记忆啊)然后我们就可以通过包名调用相应的函数或者变量了。然后我们可以不用带包名前缀调用相应包的函数。原创 2020-01-19 17:28:22 · 2168 阅读 · 0 评论 -
golang的panic用法
Go语言追求简洁优雅,所以,Go语言不支持传统的 try…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为 0了)。这几个异常的使用场景可以这么简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。原创 2020-01-19 16:29:19 · 622 阅读 · 0 评论 -
golang中defer语句使用小结
defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源、关闭数据库连接、断开socket连接、解锁一个加锁的资源。语句,C++语言里的析构函数(Destructor)可以起类似的作用,C++语言机制担保在对象被销毁前一定会执行析构函数中的代码。C++中的析构函数析构的是对象,Go中的defer析构的是函数。上述代码打印出来的值是:11。Go中的panic类似其它语言中的抛出异常,panic后面的代码不再执行(panic语句前面的defer语句会被执行)。原创 2020-01-19 16:23:51 · 419 阅读 · 0 评论 -
golang编译工具LiteIDE的调试使用方法(F5)
-gcflags "-N -l" 插入断点,按F5进入调试,F10下一步,可以查看变量变化情况其调试快捷键与VS是一样的。原创 2020-01-19 15:05:18 · 1859 阅读 · 0 评论 -
Windows平台下go编译器LiteIDE的安装和使用
综上,LiteIDE 是一个纯为 Go 语言开发的开源 IDE,具备代码补全提示、断点跟踪调试等极大提高开发效率的功能,但却没有代码编辑时的编译期错误提醒功能,用户体验及开发效率上距 Eclipse 开发 Java 代码还有不小的差距。原创 2020-01-19 11:05:17 · 1930 阅读 · 1 评论 -
Windows平台下Go语言的安装和环境变量设置
最新稳定版 1.5.3 安装包 go1.5.3.windows-amd64.msi下载地址 https://golang.org/dl/,大小约 69 MB(作者上传了一份该版本安装包到 CSDN 资源,嫌国外网速慢可以去下载:http://download.csdn.net/detail/defonds/9408855),下载之后直接运行安装,安装路径就使用它默认的 C:\Go\ 即可,之后一路 Next 并完成安装。原创 2020-01-17 17:54:14 · 1351 阅读 · 0 评论 -
golang 如何判断变量的类型
【代码】golang 如何判断变量的类型。原创 2020-01-17 14:47:11 · 1067 阅读 · 1 评论 -
golang:Linux下安装go环境
自动安装yum install golang -y如果出现先安装yum updateyum install epel-release手动安装Golang官网下载地址:https://golang.org/dl/(有墙)打开官网下载地址选择对应的系统版本, 复制下载链接这里我选择的是go1.10.3.linux-amd64.tar.gz:https:...原创 2020-01-17 14:17:53 · 952 阅读 · 1 评论 -
golang []byte和string相互转换
【代码】golang []byte和string相互转换。原创 2020-01-14 18:29:29 · 1015 阅读 · 0 评论 -
golang 中的 init 和 main函数
等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。说明如果一个包会被多个包同时导入,那么它只会被导入一次,而先输出lib2是因为main包中导入Lib1时,Lib1又导入了Lib2,会首先初始化Lib2包的东西。两个保留的函数:init函数。原创 2020-01-14 17:42:14 · 610 阅读 · 0 评论 -
golang error类型详解
来解释一下errors包,只是一个为Error()填充的简易封装,整个包的内容,只有一个New方法,可以直接看。实际上error只是一段错误信息,真正抛出异常并不是单纯靠error,panic和recover的用法以后总结。我们知道接口这个东西,必须拥有它的实现块才能调用,放在这里就是说,Error()必须得到填充,才能使用.error类型是go语言的一种内置类型,使用的时候不用特定去import,他本质上是一个接口。第三种,就是通过自定义的MyError块去订制了。怎样去理解这个订制呢?原创 2019-12-30 15:30:39 · 1390 阅读 · 0 评论 -
golang日志输出
五、os.OpenFile(*logFileName, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)这是创建log文件.一、在主程序启动之前初始化log的格式后,以后用log.xxx 都将记录在初始的cServer.log文件中。三、可以通过log.SetFlags()自定议你想要表达的格式。四、设置输出目的地log.SetOutput()golang 程序日志记录。原创 2019-11-20 10:44:39 · 1839 阅读 · 0 评论