Pointers 如何定义一个函数,该函数接收指针作为参数,并返回指向其中一个参数的指针';谁的孩子?

Pointers 如何定义一个函数,该函数接收指针作为参数,并返回指向其中一个参数的指针';谁的孩子?,pointers,go,Pointers,Go,现在我正在学习围棋,这是我第一次接触指针 但这有点棘手,我开始怀疑我做得对还是错 标题是我最好的猜测,试图用一门外语来解释我要做的事情,所以如果不清楚,我可以尝试用另一种方式来解释 这是代码的简化示例: 如您所见,输出为: true &{Campinas} [{SP [{São Paulo} {Barueri}]}] 但我实际上想得到的是: true &{Campinas} [{SP [{São Paulo} {Campinas}]}] 那么,我这里做错了什么?函数返回局部变

现在我正在学习围棋,这是我第一次接触指针

但这有点棘手,我开始怀疑我做得对还是错

标题是我最好的猜测,试图用一门外语来解释我要做的事情,所以如果不清楚,我可以尝试用另一种方式来解释

这是代码的简化示例:

如您所见,输出为:

true &{Campinas}
[{SP [{São Paulo} {Barueri}]}]
但我实际上想得到的是:

true &{Campinas}
[{SP [{São Paulo} {Campinas}]}]

那么,我这里做错了什么?

函数返回局部变量
cities
的地址。更改代码以返回切片元素的地址:

func hasCity(element string, state *State) (bool, *City) {
    for i, city := range state.Cities {
        if city.Name == element {
            return true, &state.Cities[i]
        }
    }

    return false, nil
}

输出和预期结果之间没有差异。现在你想做什么?在发布问题时,请将相关代码包含在问题正文中,而不是外部链接中。感谢@Adrian的提示,在接下来的问题中肯定会这样做。它不仅非常有效,而且帮助我了解发生了什么。谢谢@klferreira值得注意的是,golang中更惯用的方法是将指针作为第一个返回值返回,如果找不到城市,则返回一个错误值。参数也是如此:我首先传递
State
值(即
func-hasCity(State*State,city字符串)(*city,error){}
func hasCity(element string, state *State) (bool, *City) {
    for i, city := range state.Cities {
        if city.Name == element {
            return true, &state.Cities[i]
        }
    }

    return false, nil
}