## 证明如下
```
package main
import "fmt"
func main() {
}
// make sure that all the initialization happens before the init() functions
// are called, cf https://golang.org/ref/spec#Package_initialization
var _ = initDebug()
//这是在编译期间就执行
func initDebug() bool {
fmt.Println("in the initDebug happens before the init()")
return true
}
//运行期间执行的
func init(){
fmt.Println("in the init after initDebug")
}
```
## 结果如下
```
in the initDebug
in the init after initDebug
```
更多评论
用在变量
```
type Car interface {
run()
}
type Honda struct {
}
func (s Honda)run() {
}
var _ Car = Honda{}
```
上面用来判断 type Honda是否实现了接口 Car, 用作类型断言,如果Honda没有实现借口Car,则编译错误.
#2