gpt4 book ai didi

go - 如何确定变量是 slice 还是数组?

转载 作者:IT老高 更新时间:2023-10-28 13:06:19 28 4
gpt4 key购买 nike

我有一个函数,它传递了一个映射,根据它是原始元素还是 slice ,需要对每个元素进行不同的处理。 slice 的类型事先不知道。如何确定哪些元素是 slice (或数组),哪些不是?

最佳答案

看看reflect包裹。 Here is a working sample供你玩。

package main

import "fmt"
import "reflect"

func main() {
m := make(map[string]interface{})
m["a"] = []string{"a", "b", "c"}
m["b"] = [4]int{1, 2, 3, 4}

test(m)
}

func test(m map[string]interface{}) {
for k, v := range m {
rt := reflect.TypeOf(v)
switch rt.Kind() {
case reflect.Slice:
fmt.Println(k, "is a slice with element type", rt.Elem())
case reflect.Array:
fmt.Println(k, "is an array with element type", rt.Elem())
default:
fmt.Println(k, "is something else entirely")
}
}
}

关于go - 如何确定变量是 slice 还是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23304854/

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