arrays - 如何在 Go 中创建自定义类型元素的自定义类型数组?

标签 arrays go

我正在尝试创建一个有姓名和薪水的人,然后是一组人。我在“data[0] = a”处得到的错误是:“不能在分配中使用(类型人)作为类型 *person。”是否需要像在 Java 中那样进行某种转换?

package main

import "fmt"

type person struct {
    name   string
    salary float64
}

type people []*person

func main() {

    var data = make(people, 10)

    var a person
    var b person
    a.name = "John Smith"
    a.salary = 74000
    b.name = "Jane Smith"
    b.salary = 82000

    data[0] = a
    data[1] = b

    fmt.Print(data)
}

最佳答案

您构建指向指针 slice 。这就是为什么您应该使用 ab 的指针。

package main

import "fmt"

type person struct {
    name   string
    salary float64
}

type people []*person

func main() {
    var data = make(people, 10)

    var a person
    var b person
    a.name = "John Smith"
    a.salary = 74000
    b.name = "Jane Smith"
    b.salary = 82000

    data[0] = &a
    data[1] = &b

    fmt.Print(data)
}

另一种方法是将 ab 定义为指向结构的指针。

package main

import "fmt"

type person struct {
    name   string
    salary float64
}

type people []*person

func main() {
    var data = make(people, 10)
    a := &person{}
    b := &person{}

    a.name = "John Smith"
    a.salary = 74000
    b.name = "Jane Smith"
    b.salary = 82000

    data[0] = a
    data[1] = b

    fmt.Print(data)
}

关于arrays - 如何在 Go 中创建自定义类型元素的自定义类型数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21804943/

相关文章:

python - 将 numpy 整数数组转换为 12 位二进制

go - PubSub Golang客户端的发布延迟高

go - 安全地从无 channel 的goroutines中读取共享数据结构

javascript - 将包含一个巨大字符串 "numbers"的数组(以逗号分隔)转换为数字数组(不是字符串)

javascript - 从一些数组构建对象数组

go - 不同类型的相同方法并在 Go 中返回不同的类型值

linux - Go 导致 OpenGL 与 time.Tick 但不是 time.After 发生段错误

javascript - 使用自定义 header 获取请求失败

c# - 如何在c#上划分数组?

arrays - 查找最多具有 k 个奇数元素的不同连续子数组的数量