Golang 中下划线的语义
1. 忽略返回值
1 | v1, _ := function(...) |
某个函数第二个参数不关心
2. 接口断言
1 | type Foo interface { |
如上,main 函数中中希望判断 Dog 这个 struct 是否实现了 Foo 这个 interface 。用作类型断言,如果 Dog 没有实现 Foo,则会报编译错误
3. 引入包时进行初始化
被引入包 foo 定义
1 | package foo |
引入 foo 包
1 | package main |
最终会打印:
1 | init foo object: &{123 abc} |
结论:如果定义 import _ "foo"
这个语义表示在执行本段代码之前会先调用 foo 包中的初始化函数(init
)。这种方式仅让导入的包做初始化,而不使用包中其他功能。