证明如下
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
有疑问加站长微信联系(非本文作者)
我理解的编译期间是go build
用在变量
上面用来判断 type Honda是否实现了接口 Car, 用作类型断言,如果Honda没有实现借口Car,则编译错误.
赞同你的说法
这是为了在编译期间就确定是否实现了接口,没实现,就编译错误