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 關注
- 117 瀏覽
添加回答
舉報