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