首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Golang中初始化Struct类型的切片

在Golang中初始化Struct类型的切片
EN

Stack Overflow用户
提问于 2019-10-01 21:42:25
回答 1查看 215关注 0票数 2

我在Golang中有以下结构

代码语言:javascript
复制
type mystruct struct {
        Name  string
        Power int
    }

我的目的是编写一个函数,它接受一个*mystuct类型的切片作为输入,并返回一个int类型的切片,其中包含从输入切片获取的"Power“属性。

我的代码如下:

代码语言:javascript
复制
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指针初始化为nil的切片;这会导致for循环中的代码引发“无效内存或nil指针取消引用”类型的死机。

我的问题是,初始化切片的正确和最快的方法是什么;(相当于.net中的var lst =(mystruct的)新列表)

致以问候。

EN

回答 1

Stack Overflow用户

发布于 2019-10-01 21:48:07

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

代码语言:javascript
复制
for i := range obj {
    obj[i] = &mystruct{Power: i}
}

Go Playground上试试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58186111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档