go项目工程化构建:package,module
参考:https://www.jianshu.com/p/07ffc5827b26(package和module简介)
实践总结:
1,统一使用模块管理包,包属于某个模块
2,main包是一个很特殊的包,且main函数必须在main包里面,同目录同main包不同文件下的代码,不能直接调用,需要一起编译才能调用go run *.go(window的cmd不支持)
3,包其实是按模块,目录,包名一起引入的
4,包其实可以把一个目录当成一个文件,不包含子目录
package包
参考:https://www.yisu.com/zixun/13079.html(package包的使用)
https://studygolang.com/articles/27316(Main包下多个文件的相互调用)
内嵌package:
1,子目录可以有新的包名
2,子目录也可以和父目录的包名一样,但是使用的时候需要使用别名
3,同一个目录里面的包名必须相同,虽然包名可以和目录名不同
module模块:go官方包管理器
参考:https://www.jianshu.com/p/760c97ff644c(go mod 的使用)
基本步骤
go mod init name
go mod tidy
使用
1,必须在含有go.mod的目录中执行go命令。否则模块管路无效
2,可以在含有go.mod的目录的子目录里面执行go命令
3,go module支持多版本共存