私は理解できないこの小さなgolangテストがあります、obj1とobj2の間の唯一の変数宣言の変更を型宣言の重要性、nilの値
package main
import "fmt"
type myObj struct {
}
func nilObj() *myObj {
return nil
}
func nilInt() interface{} {
return nil
}
func main() {
var obj1 interface{}
fmt.Println(obj1 == nil) // true
obj1 = nilObj()
fmt.Println(obj1 == nil) // false
var obj2 *myObj
fmt.Println(obj2 == nil) // true
obj2 = nilObj()
fmt.Println(obj2 == nil) // true
var obj3 interface{}
fmt.Println(obj3 == nil) // true
obj3 = nilInt()
fmt.Println(obj3 == nil) // true
}
を、しかし、結果は異なっています。
obj1とobj3の間で、関数呼び出しは同じ型(struct pointer vs interface)を返しません。私は結果を理解しているとは完全には分かりません。
任意の助けがカバーの下
はもうこの説明が見つかりませんでした。念押し有難う! – Redtakfeoh