Tôi chỉ đang làm việc thông qua chuyến tham quan Go và tôi bối rối về các con trỏ và giao diện. Tại sao mã này không được biên dịch?
package main
type Interface interface {}
type Struct struct {}
func main() {
var ps *Struct
var pi *Interface
pi = ps
_, _ = pi, ps
}
tức là nếu Struct
là một Interface
, tại sao không phải *Struct
là một *Interface
?
Thông báo lỗi tôi nhận được là:
prog.go:10: cannot use ps (type *Struct) as type *Interface in assignment:
*Interface is pointer to interface, not interface
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 }
và đưa ra những kết luận của riêng bạn không