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

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

在golang中的if條件的基礎上重寫一個變量類型

在golang中的if條件的基礎上重寫一個變量類型

Go
嚕嚕噠 2022-06-27 16:39:40
我來自 python 背景和 Golang 的新手。我開始用 Golang 寫一些代碼,遇到了一個基于 if 條件設置數據類型的問題。在使用 Govmomi 模塊時,我遇到了一個接受最后一個參數作為接口的Retrieve方法。在我的腳本中,我正在檢查如下參數    var hss []mo.HostSystem    var ds []mo.Datastore    if command == "VMFS" {        err = v.Retrieve(ctx, []string{commandChoices[command]}, []string{"name", "summary"}, &ds)        if err != nil {            log.Fatal(err)        }        for _, host := range ds {            fmt.Println(host.Name)        }    } else {        err = v.Retrieve(ctx, []string{commandChoices[command]}, []string{"name", "summary"}, &hss)        if err != nil {            log.Fatal(err)        }        for _, host := range hss {            fmt.Println(host.Name)    }更多此代碼是我想避免但不確定如何根據 if 條件設置數據類型的樣板代碼。我正在尋找類似的東西if command == "VMFS" {dss = []mo.Datasore} else {dss = []mo.HostSystem}然后將 dss 作為最后一個參數傳遞給Retrieve方法。非常感謝任何幫助。
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

用參數的類型聲明變量dss。根據需要為變量賦值。


var dss interface{}

if command == "VMFS" {

    dss = &[]mo.Datastore{}

} else {

    dss = &[]mo.HostSystem{}

}

err = v.Retrieve(ctx, []string{commandChoices[command]}, []string{"name", "summary"}, dss)

if err != nil {

    log.Fatal(err)

}


查看完整回答
反對 回復 2022-06-27
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

你想要的是一個空接口,就像你的方法接收到的一樣。你也可以看看這個例子https://tour.golang.org/methods/14


在您的特定情況下,您想要:


var dss interface{}

if command == "VMFS"{

  dss = []mo.Datasore

}else{

  dss = []mo.HostSystem

}


查看完整回答
反對 回復 2022-06-27
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

A_kat 和 Muffin 對答案進行了一些更改。


你可以做:


if command == "VMFS" {

  dss := []mo.Datasore{}

}else{

  dss := []mo.HostSystem{}

}


err = v.Retrieve(ctx, []string{commandChoices[command]}, []string{"name", "summary"}, &dss)

if err != nil {

    log.Fatal(err)

}

迭代范圍時,這不會給您錯誤dss


查看完整回答
反對 回復 2022-06-27
  • 3 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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