我刚开始使用Go语言。我发现了Go语言中指针的一些奇怪之处。这里有一个让我困惑的例子。假设我有一个包含Golang简单模块,如下所示
我的模块是Person模块。Person模块位于person/person.go目录中,代码如下
然后另一个初始化person模块的文件位于person/package.go目录中,代码如下所示
然后我在main中运行。像下面这样运行
问题
当我改变人/包.返回一个指针,如下所示
那么main. go就变成了一个错误,看起来好像没有找到我在Person中实现的函数
帮帮忙,有什么不对吗?感谢您的评分
示例代码在下面的链接中
https://codesandbox.io/p/sandbox/heuristic-proskuriakova-hqmxv9?file=%2Fmain.go%3A7%2C1-8%2C14
1条答案
按热度按时间hpcdzsge1#
在GO中使用指针时,您需要记住三个方面,即:
x:=&y
a:=*b
查看代码后,以下是您遇到问题的原因。
1.如果你想让你的Gen方法返回一个指向接口的指针,那么你应该使用&操作符来获取地址。
1.因为你要返回一个地址到一个接口,那么在你的main函数中你必须解引用指针来使用它,如下所示,记住你要从方法中返回两个值,所以你需要将返回值赋给两个变量。在这种情况下,因为我知道我们不会收到错误,所以我使用discard来忽略第二个变量: