gpt4 book ai didi

go - 使用不同文件中的函数更改结构

转载 作者:IT王子 更新时间:2023-10-29 02:31:09 25 4
gpt4 key购买 nike

我是围棋的 super 新手,并试图通过下棋自学,所以如果我的表述不够连贯,我深表歉意。我正在尝试使用两个文件。在文件 1 上,我想创建一个 Person(30 岁,名叫 Peter)的实例。在此文件中,我希望能够调用 Change,并将他的名字更改为 Alex。

如果我只调用 user.NameChange 但不调用 change(user),这会起作用。我如何才能让它按预期工作?

非常感谢。

文件 1:

package main

import (
"fmt"
"greetings/person"
)

func Change(user person.User) {
user.NameChange()
}

func main() {
user := person.User{"Peter", 30}
fmt.Println(user) // returns "Peter"
Change(user)
fmt.Println(user) // returns "Peter" - Expected "Alex"
}

文件 2:

package person

type User struct {
Name string
Age int
}

func (u *User) NameChange() {
u.Name = "Alex"
}

最佳答案

发生这种情况是因为接收器被定义为一个值(而不是指针)。如果将 Change 更改为

func Change(user *person.User) {
user.NameChange()
}

并使用

调用它
Change(&user)

那你应该是好的。

关于go - 使用不同文件中的函数更改结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com