나는 Go tour를 통해 일하고 있으며 포인터와 인터페이스에 대해 혼란스러워합니다. 이 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
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 }
하고 자신의 결론을 내릴 것을 제안 할 수 있습니다.