golang struct 参数必须
在Go语言中,struct参数不是必须的。可以使用指针作为参数来传递struct的引用,也可以直接传递struct的值。
当struct作为参数传递时,如果想要修改原始的struct对象,可以使用指针作为参数类型。这样函数内部对struct的修改将会影响到原始的struct对象。示例如下:
type Person struct {
Name string
Age int
}
func updatePerson(p *Person) {
p.Age = 30
}
func main() {
person := Person{Name: "Alice", Age: 25}
updatePerson(&person)
fmt.Println(person) // 输出: {Alice 30}
}
如果不想修改原始的struct对象,可以直接将struct对象作为参数传递。这样函数内部对struct的修改只会影响到函数内部的副本,不会影响到原始的struct对象。示例如下:
type Person struct {
Name string
Age int
}
func printPerson(p Person) {
p.Age = 30
fmt.Println(p) // 输出: {Alice 30}
}
func main() {
person := Person{Name: "Alice", Age: 25}
printPerson(person)
fmt.Println(person) // 输出: {Alice 25}
}
需要注意的是,当struct作为参数传递时,如果struct对象较大,传递指针可能会更高效。因为传递指针只需要复制指针的值,而不需要复制整个struct对象的值。
原文地址: https://www.cveoy.top/t/topic/i9h1 著作权归作者所有。请勿转载和采集!