本文为官方文档How to Write Go Code的阅读总结:https://golang.org/doc/code.html
![](/upload/ad_content/xuanchuantu-15.jpg)
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:
成都网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的
苍南网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
概览
- 介绍一些基本概念和规范。
- 介绍如何写package和使用go tool。
代码结构
go tool要求代码结构遵循固定的规范。
规范概要
- 所有go代码都放在一个workspace下,也就是workspace下包含多个repository。
- 每个repository可以包含多个package,每个package也可以包含多个go代码文件。
- package所在目录的路径就是它的import path。
workspace
默认是$HOME/go,可以通过GOPATH环境变量修改。
- workspace下的src子目录用于存放repository源码。
- bin子目录用于存放go tool生成的可执行文件。
注意点:文中说workspace下不应使用软链,原因尚不明确。
GOPATH
GOPATH环境变量的作用是指定workspace的路径。
可以通过执行go env GOPATH检查确认当前的workspace设置。
技巧:go env可以查看所有GO环境变量。
import paths
package类型可以分三种:
- go语言标准库里的package。
- 本地workspace下的package。
- 远端repository。
注意点:自己的package不要跟标准库的package名字相同。
first program/library and using go tool
首先创建一个目录作为package,然后在这个package下编写代码文件。
文中将代码分成了两个类型
- 待main函数的代码,叫command source或program。
- 不带main函数的代码,叫package source或library。
go tool
- 对于command source,执行go install package会编译生成可执行文件,并安装到bin子目录。
- 对于package source,执行go install package会生成.a目标文件,放在 pkg子目录。(本人测试过。)
另说明:文中提到执行go build package会将编译后的package放在local build cache中,经查1.10以前的版本没有build cache,按照本人测试机1.9.4版本go help build的说法,对于non-main package,go build package执行完后会删除目标文件,因此只起到证明package可以build的作用。
技巧及注意点:
- go tool命令后面跟的package名,必须是相对src目录的路径,不是相对当前目录的路径。
- 当前目录是package时,可以直接执行go tool命令,不用跟package名。
- go tool只会在出错时有输出,因此无输出就是执行正常。
package name
几条规则和规范:
- 所有go代码文件第一行必须是package name。
- 同一个package里的代码文件必须是同一个package name。
- 按惯例,package name就是import path的最后一级目录名。
- 可执行代码文件必须是package main。
- package name没有必要是唯一的,只需要import path唯一即可。
Test
go语言包含一个轻量级的测试框架,有两部分:
- 一个package:testing。
- 一个命令:go test package。
规范:
- 测试代码文件以*_test.go命名。
- import “testing”。
- 测试函数以TestXXX命名,以*testing.T为参数。
- 调用t.Error或t.Fail表示失败。
package stringutil
import "testing"
func TestReverse(t *testing.T){
}
Remote packages
go get命令会执行fetch,build,install等步骤。
包含remote package的项目且remote package没被拉到本地时,需要用go get,用go install不行。
疑问
参考资料
- 1.10版本中才出现build cache:https://golang.org/doc/go1.10
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前标题:HowtoWriteGoCode-创新互联
文章源于:
http://bjjierui.cn/article/cspsjg.html