首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go指针取消引用

Go指针取消引用
EN

Stack Overflow用户
提问于 2021-10-21 10:34:22
回答 1查看 62关注 0票数 0

我目前正在尝试学习GO,主要是了解和使用Java,ASP.Net和一些Python,没有使用类似C的指针的经验,这导致了我现在的困惑。

我目前用来编写我的第一个GO项目的一个库叫做Commando。在这里,我有一个结构命令,感兴趣的变量称为CommandRegistry

在结构中,变量的描述如下:

代码语言:javascript
复制
// registered command configurations
Commands map[string]*Command

乍一看,我会把它理解为一个包含字符串列表的Map对象,但是它也显示了对实际Command对象的指针引用。

我所能看到的是,它是一个我可以循环的映射,它返回命令的名称(字符串),但是我想知道类型描述中的*Command是否意味着我可以以某种方式取消对指针的引用,并检索对象本身来提取它的附加信息。

据我所知,&操作数用于创建另一个对象的新指针。基本上是用Pass-by-reference代替了pass-by-value。并且*操作数通常用信号通知对象是指针或用于在新函数中请求指针。

有没有一种方法可以检索Command对象,或者为什么该类型的声明中包含*Command

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-21 10:41:03

Commands是一个映射(字典),它以字符串作为键,以指向命令的指针作为值。通过向它传递一个键,您将获得指向它所属的命令的指针。然后,可以使用*操作符取消对实际Command对象的指针的引用。就像dereferencedCommand := *Commands["key"]一样。

*操作符可能会让人很困惑,至少对我来说是这样。当用作一个类型时,它表示我们正在接收某个变量的内存地址。但是,要将内存地址解除对具体类型的引用,还需要使用*操作符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69660352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档