Golang结构数组不起作用

时间:2016-06-09 09:51:59

标签: go

我是golang的新手。我想在阵列中获取用户详细信息。

这是我的代码

package main

import (
    "fmt"
)

type user struct {
    name  string
    email string
}

func main() {
    u := []user{}
    u[0].name = "Vanaraj"
    fmt.Println(u)
}

如何实现这一目标?

提前致谢。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

它工作正常,但它是空的;尝试访问第一个元素(设置其字段)失败,不是因为数组不起作用,而是因为没有第一个元素。

使用元素like this初始化它:

u := []user{user{name: "foo", email: "foo@bar.com"}}
数组中的

push new elements

u := []user{}
newuser := user{name: "Vanaraj"}
u = append(u, newuser)

所以它不再是空的。

答案 1 :(得分:2)

首先,你要创建一个切片,而不是一个数组。 Go也有数组,所以尽量不要混淆它们。

  

你[0] .name =“Vanaraj”

在这里,您尝试访问u [0],但由于切片的大小为零,因此它不存在。

您应该使用append,如果需要,它会自动为切片分配更大的底层数组。

func main() {
    u := []user{}
    u = append(u, user{name: "Vanaraj"})
    fmt.Println(u)
}

或者,您可以在创建切片时使用make,以使用非零大小初始化切片。

func main() {
    u := make([]user, 1)
    u[0].name = "Vanaraj"
    fmt.Println(u)
}