
go
文章平均质量分 62
好吃吗
离管理层还差两级 https://github.com/xhd2015
展开
-
go: play with so source code. Go源代码编译和调试
vscode编译go编译的主要入口是(windows则是):有两个环境变量值得注意:必须在目录运行。日志:运行编译完成的;误区1: 直接调试 src/cmd/go虽然src/cmd/go能够编译成,但是如果直接使用系统的工具编译:必须使用才能编译出当前目录的。......原创 2022-06-26 12:55:14 · 289 阅读 · 0 评论 -
go test, go bench & go examples
链接https://pkg.go.dev/testinggo test运行TestXXX函数,go源码中的例子:https://github.com/golang/go/blob/go1.17/src/strings/strings_test.go包名:xxx_testgo test -run namego test -run name和go test -bench name的name参数是一个正则表达式,除非使用^...$,否则它们将执行部分匹配。例子:go test -run ''原创 2022-06-25 22:10:53 · 495 阅读 · 0 评论 -
go: int和int32
int和int32的大小都是4字节码?根据go的文档,int是至少32位,但是在64位机器上就是64位的。int is a signed integer type that is at least 32 bits in size. It is a distinct type, however, and not an alias for, say, int32.这一点需要注意。unsafe.Sizeof(int(0)) // 64位机器:8; 32位机器:4...原创 2021-11-07 22:37:39 · 1838 阅读 · 0 评论 -
go select的正确用法
select关于select的一个错误使用方法,请看下面的两份代码:代码:函数returnAfter3s是一个执行时长为3s的函数,主函数中设置了1s的超时。期望执行发生超时,也就是正常来说,1s后应当打印case after 1s。两段代码的不同之处在于,左边的代码syncChan是同步写入的,没有另起goroutine写入;右边的asyncChan开启了一个新的goroutine写入。执行结果:左边的是returnAfter3s这个函数先执行(3s时间),然后才是case after原创 2021-10-19 17:15:34 · 182 阅读 · 0 评论 -
go context
WithTimeoutpackage ctxtestimport ( "context" "testing" "time")// go test -run TestCtx -v deprecated_loader/ctxtest/*.gofunc TestCtx(t *testing.T) { ctx := context.Background() // WithTimeout will start a timer, after which ctx's Done is closed原创 2021-10-09 18:05:50 · 90 阅读 · 0 评论 -
go coverage 覆盖率工具
文章https://go.dev/blog/cover测试覆盖度定义:Test coverage(测试覆盖度)用于衡量一个包中的代码被测试用例覆盖的程度。如果运行所有的测试用例能够触发包中80%的代码运行,我们就认为测试覆盖度为80%。通常情况下,要计算测试覆盖率,需要对执行文件进行二进制拦截,比如gcov工具:通过在每个逻辑分支之后添加一个断点,来标记这个分支是否被执行到。这种基于二进制拦截的方法移植性不够好,需要针对不同CPU架构来实现。go test -cover通过对源代码进行重写,在分原创 2021-09-22 23:19:36 · 3675 阅读 · 0 评论 -
字符串编码(utf8)
文章Things about Unicode everyone needs to knowgolang: Strings, bytes, runes and characters in Go编码发展的历史早期自由定义的编码集ASCII码的起源:1.英文字符可用127以内的数字映射,需要7位;2.最初的计算机都是8位的在ASCII码中,0~32范围的字符称为控制字符,是不可打印的。接着,不同的制造商就对128~255编码进行自定义。IBM-PC定义了OEM字符集,提供对某些欧洲语言的字符进行表原创 2021-09-20 00:35:04 · 2707 阅读 · 0 评论 -
go slice结构
文章slice介绍append的机制slice tricksgo dataslicearray的语法: [4]int{1,2,3,4}, [...]int{1,2,3}。在go中array是值类型,这就意味着一个类型为array的变量名并不是一个指针,当传递值是,array总是被复制。slice的语法: []int{1,2,3,4}, make([]int), make([]int,10)当make只有两个参数时,cap和len相同。slice本质上是array的一个片段的描述,它包含3部原创 2021-09-13 22:15:05 · 109 阅读 · 0 评论 -
【go】golang源码各个包功能分析
快速链接:https://github.com/golang/go/tree/release-branch.go1.15//src/cmd/go/internal命令说明文档:https://github.com/golang/go/blob/release-branch.go1.15/src/cmd/go/alldocs.gocmd/go/internal/load包:根据包的ImportPath确定引用名称代码:https://github.com/golang/go/blob/release-原创 2020-10-25 01:24:51 · 1088 阅读 · 0 评论 -
【go】ssa和调用链分析
关于链接https://quasilyte.dev/blog/post/go_ssa_rules/https://godoc.org/golang.org/x/tools/go/ssa原创 2020-10-21 18:18:44 · 1557 阅读 · 0 评论