gpt4 book ai didi

go - 在一个案例中有多个选项,然后在案例中进行一个循环

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

我有一个接受 interface{} 的函数,然后我对类型进行切换,大小写,如果它是 slice ,我想遍历元素。我遇到的问题是我在案例选择器中不能有多个选项,例如我似乎不能有 []int, []float32 然后在值上做一个范围。

我想做的是这样的

func digestCollection(obj interface{}) ([]byte, error) {

switch v := obj.(type) {
case []int64, []float64:
for _, values := range v {
// do something with v whether its an int or float
}
}
}

但是我收到一个错误,说我无法迭代接口(interface)。

最佳答案

在类型切换中,如果存在单一类型案例,则 v属于那种类型:

switch v:=obj.(type) {
case []int64:
// Here, v is []int64
case []float64:
// here, v is []float64
}

但是,如果有多种情况,或者是默认情况,那么 v 的类型是 obj 的类型:
switch v:=obj.(type) {
case []int64,[]float64:
// Here, type of v is type of obj

因为 v如果它是 int 数组或 float64 数组,则不能有明确的类型。为两者生成的代码会有所不同。

您可以尝试使用反射来遍历数组,或者编写两个循环,一个用于 int,一个用于 float64。

关于go - 在一个案例中有多个选项,然后在案例中进行一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62010232/

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