当前位置: 首页 > 面试题库 >

Go中的临时地址?

倪培
2023-03-14
问题内容

处理这种情况的最干净方法是什么:

func a() string {
    /* doesn't matter */
}

b *string = &a()

这将产生错误:

不能使用a()的地址

我的理解是,如果使用了Go地址,Go会自动将局部变量提升到堆中。在这里,很明显要使用返回值的地址。什么是惯用的处理方式?


问题答案:

地址运算符返回一个指向具有“家”的东西的指针,例如变量。您的代码中表达式的值是“无家可归”。如果您确实需要* string,则必须分两个步骤进行操作:

tmp := a(); b := &tmp

请注意,尽管*
string有完全有效的用例,但很多时候使用它们是错误的。在Go中,它string是一种值类型,但是是一种便宜的值类型(一个指针和一个int)。字符串的
是不可变的,更改了*string“ home”所指向的位置,而不是字符串值,因此在大多数情况下*string根本不需要。



 类似资料:
  • 本文向大家介绍8085微处理器中的临时(临时)寄存器,包括了8085微处理器中的临时(临时)寄存器的使用技巧和注意事项,需要的朋友参考一下 临时寄存器也是8位寄存器,程序员根本无法访问。它被临时存储在8085微处理器内部,该微处理器是指令集的8位操作数。例如,当完成指令“ MVI M,34H”的提取时,指令寄存器IR寄存器将接收MVI M的操作码,而Temp寄存器将接收34H。 进行的算术和逻辑序

  • 问题内容: 我正在试用Go的新模块系统,无法访问本地软件包。以下项目位于我的gopath外的桌面上的文件夹中。 我的项目结构如下: 告诉我 问题答案: 我强烈建议您使用go工具链,它可以解决这些问题。带vscode-go插件的Visual Studio Code非常有用。 这里的问题是Go需要相对于您或import语句的相对路径。根据您所在的位置,导入路径也应包括该位置。在这种情况下,import

  • 问题内容: 我们编写了一个程序,通过该程序我们试图找到常量的地址。有可能这样做吗? 它给出了一个错误,谁能告诉我们如何找到一个常量的地址? 问题答案: 简而言之: 您不能 。 错误消息显示: 不能取k的地址 地址运算符的操作数有限制。规格:地址运算符: 对于类型的操作数,地址操作生成类型为的指针。操作数必须是 可寻址的 ,即变量,指针间接 寻址 或切片索引操作;或可寻址结构操作数的字段选择器;或可

  • 问题内容: 这是一个悬而未决的问题,但我真的很想听听人们的意见。 我很少使用显式声明的临时表(表变量或常规#tmp表),因为我认为不这样做会导致更简洁,可读性和可调试性的T- SQL。我还认为,与需要临时存储(例如,在查询中使用派生表)时使用SQL相比,SQL可以做得更好。 唯一的例外是当数据库不是典型的关系数据库而是星型或雪花模式时。我了解最好是首先将过滤器应用于事实表,然后使用生成的临时表从维

  • 问题内容: Go博客中的“ Go maps in action ”条目指出: 地图不能安全地并发使用:未定义同时读取和写入地图时会发生什么情况。如果您需要从并发执行的goroutine中读取和写入映射,则必须通过某种同步机制来调解访问。保护地图的一种常见方法是使用sync.RWMutex。 但是,一种常见的访问地图的方法是使用关键字遍历它们。出于并发访问的目的,不清楚在一个循环内执行是“读”还是该

  • 问题内容: 如何将UTC时间转换为 当地时间 ? 我已经为我需要当地时间的所有国家/地区创建了具有UTC时差的地图。然后,我将该差异作为持续时间添加到当前时间(UTC),并打印结果希望是该特定国家/地区的当地时间。 由于某些原因,结果是错误的。例如,在匈牙利,相差一小时。知道为什么我得到的结果不正确吗? 问题答案: 请记住,操场的时间设置为,因此它正在工作。 正确的方法是使用,这是一个示例: