这篇集中记录一些经验。
工程使用
GO111MODULE 的值可在编译时指定,也可用 go env 指定。
在 .mod 文件目录执行:
1 | GO111MODULE=on go build -mod vendor -o output/hello app/main.go |
建议在编译时指定,其它环境变量类似。
编程方面
结构体
结构体中,大写为可导出,小写不可导出。大写者,可转换为json(可能有其它),小写的不行。如果字段后加json:"devid"
形式,可转换为该形式的字段,否则保持原有字段。此机制即可保留一些内存的数据,也可以保留写到文件的数据。另外,嵌套的结构体,无法转换。
问题及解决
编译提示:
1 | pkg\db\create_sql.go:27:2: cannot find package "." in: |
解决:引入的包名与go.mod不同,将代码出现的dbtool改为cmdtool(本工程名为cmdtool)。