看完本期小窍门 你将学会
- go下载/更新 包的命令
- 如何挎包调用/路径名称约定
- init()函数的作用和一些细节
本文涉及到的目录结构如下
关于 go.mod go.sum
这个demo依赖
github.com/bytedance/sonic
可以使用下面两个命令来确保依赖正常加载
go get github.com/bytedance/sonic
go mod tidy
上面两个命令的区别:
- go get 会强制下载你想要的任何依赖 不管有没有import
- tidy 会检测import 的依赖项, 然后自动删除没有import的依赖, 自动下载有import但是没有本地缓存的依赖
- 这两个命令会生成/修改 本地go.mod, 此文件由go自维护, 不需要关心
module test666
go 1.16
require github.com/bytedance/sonic v1.10.0 // indirect
main 函数
main中引用了 一个工具类
这个工具类的 package name = util666
这个工具类的 物理路径是 = test666/util
test666 是自身的mod名称
所以import 规则为: [模块名]/[物理包路径名称]
但是调用的时候: package名称
当然 你也可以使用别名来调用
挎包调用需要大写 方法/变量 首字母
package main
import(
"fmt";
"test666/util";
_ "github.com/bytedance/sonic"
)
func main(){
fmt.Println("hello ksl", util666.Name)
util666.Speak()
}
util类
package util666
import("fmt")
var (
Name="kslname"
)
func Speak() string {
fmt.Println("I'm ksl")
return "I'm ksl return"
}
此时使用调用run方法会成功
- 未引用的包 使用了 _ 来忽略引用检测告警
go run important/a.go
关于init 函数
- init函数 在被import时会自动触发调用
- 即使使用 _ 忽略import 引用告警, 那也只是忽略了告警本身
该模块还是会被import, 所以还是会触发init()