Go 当我将外部结构的实例传递到外部结构实现的接口切片中时,无法访问嵌入式结构
这给了我以下错误: ./prog.go:36:27:allSquares[0]。名称未定义类型twoDimensional没有字段或方法名称 我对这里发生的事感到困惑。Type square嵌入了Type shape,Type square还实现了二维接口Go 当我将外部结构的实例传递到外部结构实现的接口切片中时,无法访问嵌入式结构,go,struct,interface,slice,Go,Struct,Interface,Slice,这给了我以下错误: ./prog.go:36:27:allSquares[0]。名称未定义类型twoDimensional没有字段或方法名称 我对这里发生的事感到困惑。Type square嵌入了Type shape,Type square还实现了二维接口 如果我将square的一个实例传递到一个二维片段中,为什么我不能再从square访问类型shape?接口本身没有.name属性。您需要使用类型断言allSquares[0]。Squares如下所示: package main import
如果我将square的一个实例传递到一个二维片段中,为什么我不能再从square访问类型shape?接口本身没有.name属性。您需要使用类型断言allSquares[0]。Squares如下所示:
package main
import (
"fmt"
)
type shape struct {
name string
}
type square struct {
shape
length int
}
type twoDimensional interface {
area() int
}
func (s square) area() int {
return s.length * s.length
}
func main() {
s1 := square{
length: 2,
}
s1.name = "spongebob"
allSquares := []twoDimensional{
s1,
}
fmt.Println(allSquares[0].name)
}
package main
import (
"fmt"
)
type shape struct {
name string
}
type square struct {
shape
length int
}
type twoDimensional interface {
area() int
}
func (s square) area() int {
return s.length * s.length
}
func main() {
s1 := square{
length: 2,
}
s1.name = "spongebob"
allSquares := []twoDimensional{
s1,
}
fmt.Println(allSquares[0].(square).name)
}