我只是通過Go tour,我對指針和接口感到困惑。爲什麼這個Go代碼不能編譯?爲什麼我不能將* Struct分配給*接口?
package main
type Interface interface {}
type Struct struct {}
func main() {
var ps *Struct
var pi *Interface
pi = ps
_, _ = pi, ps
}
即如果Struct
是Interface
,爲什麼不是*Struct
是一個*Interface
?
該錯誤消息我得到的是:
prog.go:10: cannot use ps (type *Struct) as type *Interface in assignment:
*Interface is pointer to interface, not interface
參見http://stackoverflow.com/q/20874798/260805 – Ztyx
它看起來像接口可以表現得像隱含的指針... – Victor
可能我建議充實用'FUNC主(){ \t變種PS * STRUCT =新(結構) \t變種PI *接口 \t變種i界面 \t I = PS \t PI您的遊樂場=&I \t fmt.Printf(「%v,%v,%v \ n」,* ps,pi,&i) \t i = * ps \t fmt.Printf(「%v,%v,%v \ n」 ps,pi,i) \t _,_,_ = i,pi,ps }'並作出自己的結論 – Victor