我只是在Go导游中工作,我对指针和接口感到困惑。为什么此Go代码无法编译?
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
1
另请参见stackoverflow.com/q/20874798/260805
—
Ztyx 2014年
看起来接口的行为就像隐式指针一样……
—
Victor
我可以建议您用它来丰富您的游乐场
—
Victor
func main() { var ps *Struct = new(Struct) var pi *Interface var i Interface i = ps pi = &i fmt.Printf("%v, %v, %v\n", *ps, pi, &i) i = *ps fmt.Printf("%v, %v, %v\n", *ps, pi, i) _, _, _ = i, pi, ps }
并做出自己的