在 Go 语言中,结构体参数并非必须。你可以使用指针作为参数来传递结构体的引用,也可以直接传递结构体的值。

使用指针传递结构体

当结构体作为参数传递时,若你希望修改原始的结构体对象,可以使用指针作为参数类型。这样,函数内部对结构体的修改将会影响到原始的结构体对象。

示例如下:

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}
}

直接传递结构体

如果你不想修改原始的结构体对象,可以直接将结构体对象作为参数传递。这样,函数内部对结构体的修改只会影响到函数内部的副本,不会影响到原始的结构体对象。

示例如下:

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}
}

注意

当结构体作为参数传递时,如果结构体对象较大,传递指针可能会更高效。因为传递指针只需要复制指针的值,而不需要复制整个结构体对象的值。

Golang 结构体参数:传递指针与值 | 深入解析

原文地址: https://www.cveoy.top/t/topic/lgdB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录