亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Go 覆蓋 AWS CDK 中的 AvailabilityZones(接口中的函數)

使用 Go 覆蓋 AWS CDK 中的 AvailabilityZones(接口中的函數)

Go
慕無忌1623718 2023-02-06 18:44:15
Stack.AvailabilityZones的文檔說:// To specify a different strategy for selecting availability zones override this method.AvailabilityZones() *[]*string這是我嘗試執行此操作的代碼:stack := awscdk.NewStack(scope, &id, &sprops)stack.AvailabilityZones = func() *[]*string {      // this is line 22    return &[]*string{jsii.String("us-west-1a")}}但是,我收到錯誤:[andrew@localhost cdk]$ go run vpc.go common.go ./vpc.go:22:2: cannot assign to stack.AvailabilityZones (value of type func() *[]*string)我應該怎么做?我不確定我是否犯了一個愚蠢的錯誤,或者我是否需要做一些完全不同的事情(“覆蓋”在不是 OO 的 go 中是什么意思?編輯:或者至少不是意味著我可以從蟒蛇的例子)。
查看完整描述

1 回答

?
HUX布斯

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 序列化相關的運行時錯誤?!)


查看完整回答
反對 回復 2023-02-06
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號