下划线用在需要占位但是名字无关紧要的地方。典型的用法有三个:

  • import 只需要引入到环境中,通常包的init()已经将环境做了初始化
import _ "net/http/pprof" //prof的常用方法

import _ "github.com/go-sql-driver/mysql" //初始化mysql驱动,是的go database/sql可用
  • 抛弃赋值或者返回值 表示对应位置的值后续并不使用。如果定义一个变量后面不用,返回会编译出错
for _, v := range myslice {}

_, err := myfunc()
  • 用于类型断言 判断某个类型是否实现了接口I,否则编译出错。由于golang中的接口实现并不是侵入式的,这中用法是一种另类的保障
type T struct{}
var _ I = T{} //I为interface

参考: