go语言中的nil即空值/零值,含义与java中的null一样,但是用起来是有些坑的。
先来段java代码
interface MyInterface {
}
public class Test implements MyInterface{
public static void main(String[] args) {
Test test = null;
MyInterface myInterface = test;
System.out.println(myInterface == null);
}
}
运行结果
true
没毛病[Yeah!]
再来段go代码
package main
import "fmt"
type MyInterface interface {
}
type Test struct {
}
func main() {
var test *Test = nil
var myInterface MyInterface = test
fmt.Println(myInterface == nil)
}
运行结果
false
惊不惊喜?
敲黑板
一、golang中的nil是必须带类型的
nil 在 Go语言中只能被赋值给指针和接口。什么意思?就是以下这种写法是报错的