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

问题描述 投票:-3回答:1

我有一个继承自结构A的结构B.我有另一个结构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:抱歉我的英语不好

go inheritance struct append slice
1个回答
3
投票

col1.Cols是类型* A,col2是类型* B,col2.A是类型A,如果要向切片添加新元素,它们应该是相同的类型。所以,如果您将最后一个语句更改为

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

它会工作。

© www.soinside.com 2019 - 2024. All rights reserved.