go - 在golang中将引用类型转换为值类型

标签 go

我想创建 *Person 类型的元素 slice 。

package main

type Person struct {
    Name string
}

func convertRefTypeToType(refPerson *Person) Person {
    // is it possible to convert *Person to Person
    return Person{}
}

func main() {
    personRef := &Person{Name: "Nick"}
    person := convertRefTypeToType(personRef)
    people := []Person{personRef} // person
}

但有错误:

./refConvert.go:16: cannot use personRef (type *Person) as type Person in array element

是否可以将 *Person 类型的元素转换为 Person 类型的元素? 这种愿望可能看起来很奇怪,但我的目标函数接受类型为 *Person 的参数,并且在这个目标函数中我必须创建 slice 。

playground

最佳答案

[]Person{}Person 的 slice ,但是,您想要指向 Person 的指针 slice 。 它应该定义为 people := []*Person{personRef}

关于go - 在golang中将引用类型转换为值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663973/

相关文章:

recursion - 递归 Goroutines,告诉 Go 停止从 channel 读取的最简洁方法是什么?

go - 对 vscode delve 调试器感到困惑

运行 get vs build 时的 Go 模块

go - 运行固定数量的 goroutines

go - 使用模块跟踪依赖项的 Go 项目的包布局?

networking - 在 Go 中将结构转换为字节 slice 的紧凑方法是什么?

go - 指针值在结构方法中更改后设置为零

database - 如何解决 go 编程语言中的数据库结构问题?

string - Go中的string和[]byte有什么区别?

go - 在 goroutine 中添加处理程序时如何防止数据竞争?