Golang实践录:经验积累

这篇集中记录一些经验。

工程使用

GO111MODULE 的值可在编译时指定,也可用 go env 指定。

在 .mod 文件目录执行:

1
GO111MODULE=on go build -mod vendor -o output/hello app/main.go

建议在编译时指定,其它环境变量类似。

编程方面

结构体

结构体中,大写为可导出,小写不可导出。大写者,可转换为json(可能有其它),小写的不行。如果字段后加json:"devid"形式,可转换为该形式的字段,否则保持原有字段。此机制即可保留一些内存的数据,也可以保留写到文件的数据。另外,嵌套的结构体,无法转换。

问题及解决

编译提示:

1
2
pkg\db\create_sql.go:27:2: cannot find package "." in:
E:\project\golang_test\go_test\db_test\cmdtool\vendor\dbtool\pkg\com

解决:引入的包名与go.mod不同,将代码出现的dbtool改为cmdtool(本工程名为cmdtool)。