gpt4 book ai didi

arrays - 复制相同类型的数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:35:46 26 4
gpt4 key购买 nike

我想编写一个程序来接收一个数组(字符串、整数或其他数组)并创建另一个仅包含第一个元素的相同类型的数组。

例如:

对于字符串数组arr := []string("hello", "world")

我的输出是 arr2 := []string(arr[0]);

我不能使用复制功能,因为要那样做,我必须为它创建(制作)一个新的 slice 。在这种情况下,我仍然需要找出第一个数组的类型(string、int、bool 等等……)

也许我可以使用 reflect.TypeOf() 但我仍然不知道如何使用该信息来创建相同类型的 slice 或数组。

我不考虑为此使用条件。例如:

if reflect.TypeOf(arr) == []int {
arr := []int(arr[0])
} else if reflect.TypeOf(arr) == []string
arr := []string(arr[0])
} ...

我很乐意在那里得到帮助。提前致谢。

最佳答案

您可以就地对其进行子 slice :

s2 := s1[0:1]

但是如果你真的需要创建一个新的 slice ,你可以这样做:

func f(s interface{}) interface{} {
v := reflect.ValueOf(s)
t := v.Type()
res := reflect.MakeSlice(t, 1, 1)
res.Index(0).Set(v.Index(0))
return res.Interface()
}

Playground :http://play.golang.org/p/w1N3pgvAwr .

关于arrays - 复制相同类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349803/

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