go
ZHANGJNWEI
这个作者很懒,什么都没留下…
展开
-
go项目目录
应用项目是包含了很多需要部署在一起的程序集,包括服务、命令行工具和后台运行的程序。每个项目都对应一个含有其所有源代码的仓库,包括所有依赖的三方包。你需要几个应用项目,视情况以你而定,当然是越少越好。每个应用项目通常包含三个根目录,分别是cmd, internal, pkg, vendor。在 internal 文件里也会包含pkg目录,但是它和 internal 里其他的包有着不同的设计约束。一个典型的应用项目结构应该是这样的:paper-code/examples/groupevent...转载 2020-09-14 17:34:49 · 770 阅读 · 0 评论 -
go内存模型
GO内存模型: 明确在一个goroutine中的变量 在什么条件下在goroutine中一个变量的读取得到保证。当其他不同的goroutine向变量写入值时可以观察到。 修改某个data可被多个goroutine访问的,需要串行化。 串行化访问机制sync和sync/atomic包。 包p导入包q,q的init方法在p开始之前已完成; main.main在init完成之后开始; 创建goroutine ...原创 2020-05-09 18:09:13 · 122 阅读 · 0 评论 -
delve调试go程序
安装delve:$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve$ cd $GOPATH/src/github.com/go-delve/delve$ make install调试main包中代码dlv debug github.com/me/foo/cmd/foo -- -arg1 value ##参数子命令: debug test h...原创 2020-05-09 10:43:20 · 399 阅读 · 0 评论 -
gdb调试go程序
gccgo原生支持gdb。编译和连接go程序时使用gc工具链,将生成DWARFv4调试信息。链接器标志-w将会忽略调试信息。gc生成代码包括内联函数调用和寄存器变量,有些优化操作导致gdb调试变得困难,使用go build-gcflags=all="-N -l"编译选项取消优化。core dump. 触发dump当程序崩溃时。设置环境变量GOTRACEBACK=crash。gdb的一般操作: list list line list file.go:line b...原创 2020-05-09 10:19:06 · 314 阅读 · 0 评论