gpt4 book ai didi

go - 在golang中的if条件的基础上重写一个变量类型

转载 作者:行者123 更新时间:2023-12-01 22:41:13 24 4
gpt4 key购买 nike

我来自 python 背景和 Golang 的新手。
我开始用 Golang 写一些代码,遇到了一个基于 if 条件设置数据类型的问题。
在使用 Govmomi 模块时,我遇到了 Retrieve接受最后一个参数作为接口(interface)的方法。
在我的脚本中,我正在检查如下参数

    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 方法。
非常感谢任何帮助。

最佳答案

声明变量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)
}

关于go - 在golang中的if条件的基础上重写一个变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63851264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com