我正在尝试创建一个有姓名和薪水的人,然后是一组人。我在“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 。这就是为什么您应该使用 a
和 b
的指针。
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)
}
另一种方法是将 a
和 b
定义为指向结构的指针。
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/