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)
}
TA贡献1790条经验 获得超9个赞
你想要的是一个空接口,就像你的方法接收到的一样。你也可以看看这个例子https://tour.golang.org/methods/14
在您的特定情况下,您想要:
var dss interface{}
if command == "VMFS"{
dss = []mo.Datasore
}else{
dss = []mo.HostSystem
}
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
- 3 回答
- 0 关注
- 176 浏览
添加回答
举报