go语言 结构体怎么传值,修改值后不影响原来的结构

go语言 结构体怎么传值,修改值后不影响原来的结构
张家俊
2025年01月21日
|
浏览 107

答案是在Go语言中,传递结构体时使用值传递。为了确保修改结构体的副本而不影响原始结构体,您可以通过传递指向结构体的指针来实现。这样在函数内部对结构体的修改会影响到原始结构体。以下是一个简单的示例:

复制代码
package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func modifyPerson(p *Person) {
    p.Name = "Alice"
    p.Age = 30
}

func main() {
    original := Person{Name: "Bob", Age: 25}
    
    fmt.Println("Original Person:", original)
    
    modified := original // 创建原始结构体的副本
    
    modifyPerson(&modified) // 传递指向副本的指针以修改值
    
    fmt.Println("Modified Person:", modified)
    fmt.Println("Original Person:", original) // 原始结构体未受影响
}

在上面的示例中,我们定义了一个Person结构体,然后创建了一个原始结构体original。我们将其复制到modified,并将指向modified的指针传递给modifyPerson函数以修改副本的值,而不会影响原始结构体。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;