将结构B(从结构A继承)附加到结构A的切片上

时间:2019-02-20 15:36:58

标签: go inheritance struct append slice

我有一个结构B,它继承自结构A。我有另一个结构C(包含结构A的一部分),我想将B附加到C。

package main

type A struct {
    target string
}

type B struct{
    A
    values []int
}

type C struct{
    Cols []*A
}

func main() {

var values = []int{1,2,3}
var col1 = C{} 
var col2 = &B {
    A: A{
        target: "txt",
    },
    values: values,
    }

col1.Cols = append(col1.Cols, col2)

}

运行此代码时,它会产生一个错误:不能将col2(* B型)用作附录中的* A型

请问怎么了?我是新

Ps:对不起,我的英语不好

1 个答案:

答案 0 :(得分:3)

col1.Cols是* A类型,col2是* B类型,col2.A是A类型,如果要向切片中添加新元素,则它们应为相同类型。 因此,如果您将最后一条语句更改为

hammerjs

它将起作用。