The first day with Golang
Based on official document
安装与配置
安装官网下就行,需要配置PATH
配合vscode,国内有些东西下不了,需要配置go proxy
具体环境见go env
,主要的几个,均通过.bashrc
修改:
- GO111MODULE —> on
- GOPATH —> 具体go的环境,里面有下载的各种库和工具,主要文件夹包括src, bin, pkg,顾名思义即可
- GOPROXY —> proxy, suggest
GOPROXY="https://goproxy.io,direct"
配好proxy后开vscode装go插件,基本的工具都会自动推荐下载
代码框架
主要是理解module和package。可以参考这篇文章
package
package可以理解为包,用于管理源代码。main包即为程序入口。
package必须在一个文件夹内,且一个文件夹内也只能有一个package,但一个文件夹内可以有多个文件。
module
module是基本的模块的单位,可以通过go get(类似于git clone)从网上拉取,也可以使用本地的module
在一个文件夹下,首先要go mod init ur-website.com/mod-name
,在该文件夹下会出现一个go.mod文件记录module信息;在其他文件夹调用这个包时,要在import中注明这个module。
- 对于本地包,使用命令进行重定向:
go mod edit -replace=ur-website.com/mod-name=/path/to/target/module
.
之后使用git mod tidy
来拉取该包或在本地寻找这个包
之后go.mod文件大概长这个样子:
1 | module example.com/hello |
单元测试
测试文件一般以targename_test.go
命名,go可以识别其中以Test开头的func。执行时使用go test [-v]
(v—verbose)即可。
测试函数以TestName命名,Name就是具体测试的内容。一般带有参数(t *testing.T)
,需要import testing包。函数需要考虑理想情况的输出,进行比对,将不符合预期的结果通过参数f输出。
build/install
go build
可以在本地对于main包生成可执行文件(可以指定生成不同平台、不同架构的文件),go install
将可执行文件放到GOBIN
下,如果把这个加到path里就可以全局执行了。
还要补充的
还有几个东西,比如函数定义方式func name(arg type) rettype|(multi, return, type){}
没有c的先声明后使用的要求,注意只有首字母大写的函数才能被别的mod使用
比如:=语法糖、error handler、log和slice、数组、map等数据结构和for、if格式等到时候再在语法的部分写
还有make等内存分配方式
TODO list
除了语法,还有几个部分
writing web application
effective go