golang下划线的三种用法

## 1\. 忽略返回值

某个函数返回三个参数,但是我们只需要其中的两个,另外一个参数可以忽略

1
v1, v2, _ := function(...)

2. 用在 import package

自动调用导入包的 init() 进行初始化,而不使用包中其他功能。

1
import _ "test/foo"

示例

1
2
3
4
5
6
7
8
package main
import (
"fmt"
_ "test/foo"
)
func main() {
fmt.Printf("hello world\n")
}

运行结果

1
2
init foo object: &{123 abc}
hello world

3. 变量断言

1
2
3
4
5
6
7
8
// 定义了一个接口
type Foo interface {
Say()
}

// 结构体
type Dog struct {
}

如果Dog没有实现Foo,则会报编译错误

1
var _ Foo = Dog{}