1 回答
TA贡献1876条经验 获得超6个赞
Go 有一种继承和“覆盖”方法的方法。您通过在结构中“嵌入”另一种类型(您没有命名类型)来继承;请参阅:Go“继承”- 在结构中使用匿名类型作为方法参数
然后,您的结构将继承嵌入式类型的所有方法。您可以通过直接在结构上声明它们来覆盖单个的。
用一个简化的例子,它看起来像:
type MyStack struct {
awscdk.Stack
}
func (s *MyStack) AvailabilityZones() *[]string {
return &[]string{"foo", "bar"}
}
func f() {
// ...
stack := awscdk.NewStack(scope, &id, &sprops)
myStack := &MyStack{Stack: stack}
fmt.Println(myStack.AvailabilityZones())
}
编辑:这实际上对我有用(andrew cooke)(但没有解决我更大的问题,所以没有深入测试)
type ZoneStack struct {
awscdk.Stack
}
func (stack *ZoneStack) AvailabilityZones() *[]*string {
return &[]*string{jsii.String("us-west-1a")}
}
...
zstack := ZoneStack{}
awscdk.NewStack_Override(&zstack, scope, &id, &sprops)
(上面的原始答案编译,但给出似乎与 JS 序列化相关的运行时错误?!)
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报