gpt4 book ai didi

pointers - 在 Golang 中初始化 Struct 类型的 Slice

转载 作者:行者123 更新时间:2023-12-02 10:17:48 24 4
gpt4 key购买 nike

我在 Golang 中有以下结构

type mystruct struct {
Name string
Power int
}

我的目的是编写一个函数,该函数将 *mystuct 类型的 slice 作为输入,并返回包含从输入 slice 获取的“Power”属性的 int 类型的 slice 。

我的代码如下:

package main
import (
"fmt"
)
func main() {
obj := make([]*mystruct, 15)
for i, s := range obj {
s.Power = i
}
fmt.Println(extractpowers(obj))
}
func extractpowers(obj []*mystruct) []int {
powers := make([]int, len(obj))
for i, s := range obj {
powers[i] = s.Power
}
return powers

}

我的问题是 obj := make([]*mystruct, 15) 创建了一个由 15 个 *mystruc 指针组成的 slice ,初始化为 nil;这会导致 for 循环中的代码引发“无效内存或 nil 指针取消引用”类型的 panic 。

我的问题是初始化 slice 的正确且最快的方法是什么? (相当于 .net 中的 var lst = new List(Of mystruct))

问候。

最佳答案

使用 composite literal并在循环中获取其地址:

for i := range obj {
obj[i] = &mystruct{Power: i}
}

Go Playground 上尝试一下.

关于pointers - 在 Golang 中初始化 Struct 类型的 Slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186111/

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