如何定义一个函数,该函数接收一个指针作为参数并返回一个指向该参数的子节点之一的指针?

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

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

标题是我最好的猜测,试图用外语解释我想做的事情,所以如果不清楚,我可以尝试用不同的方式解释。

这是代码的简化示例:https ://play.golang.org/p/eultYp7Cq12

func hasCity(element string, state *State) (bool, *City) {

    for _, city := range (*state).Cities {

        if (city.Name == element) {

            return true, &city

        }

    }

    return false, nil

}

如您所见,输出是:


true &{Campinas}

[{SP [{São Paulo} {Barueri}]}]

但我实际上想要得到的是:


true &{Campinas}

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

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


手掌心
浏览 91回答 1
1回答

哔哔one

该函数返回局部变量的地址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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go