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

Go结构中的无名字段?

巢权
2023-03-14
问题内容

package main

import "fmt"

type myType struct {
    string
}

func main() {
    obj := myType{"Hello World"}

    fmt.Println(obj)
}

结构中无名字段的目的是什么?

是否可以像使用命名字段一样访问这些字段?


问题答案:

请参阅“ 在Go中嵌入
”:您在结构中嵌入了一个匿名字段:通常与嵌入式结构一起使用,而不是像这样的基本类型string。该类型没有要显示的“提升字段”。

字段或方法f在一个结构匿名字段的x被称为 促进 如果x.f是一个合法的选择器,它表示字段或方法f

提升的字段的作用类似于结构的普通字段,只是它们不能用作结构的复合文字中的字段名称。

(这里string本身没有字段)

请参阅“ 何时使用指针嵌入”中的类型嵌入示例。

是否可以像使用命名字段一样访问这些字段?

A fmt.Println(obj.string)返回Hello World而不是{Hello World}



 类似资料:
  • 问题内容: 基本上,(我知道)迭代a的字段值的唯一方法是这样的: 我想知道,是否有更好,更通用的实现方法,所以我不需要单独列出每个参数,或者有没有更好的方法遍历结构? 我试图浏览一下包装,但是碰到了墙,因为我不确定一旦取回该怎么办。 谢谢! 问题答案: 使用检索字段的后,您可以通过调用从中获取接口值。然后,所述接口值表示字段的值。 您可能知道,没有函数可以将字段的值转换为具体类型,因为您可能没有泛

  • 问题内容: 我正在看Go,它看起来很有前途。我试图弄清楚如何获得go结构的大小,例如 我当然知道它是24字节,但是我想以编程方式知道它。 您对如何执行此操作有任何想法吗? 问题答案: 注意: OP错误。unsafe.Sizeof确实在示例Coord3d结构上返回24。请参阅下面的评论。

  • 问题内容: 如果我要存储许多结构: 我可以用片来做,但是看起来使用更少的内存可以使用适当的set结构。 不幸的是,Go没有固定的结构。每个人都建议使用,但由于是结构,所以不起作用。有人有什么好的解决方案吗?理想情况下,无需下载库。 问题答案: 通常,设置和映射数据结构比将一组值存储在按设置的普通数组或切片中需要更多的内存,并且映射提供有效的附加功能,例如唯一性或通过键检索值。 如果要最小化内存使用

  • 问题内容: 在此结构定义中: 字符串 “ json:message” 的含义是什么,以及如何访问它(如果可访问)。先感谢您。 问题答案: 这些是结构标记。包使用此struct标记 将对象转换为JSON,并将 JSON字符串转换为对象 在将一个结构封送(编码)为JSON字符串时,它将查找此struct标记以分配 键名,如果不存在,则它可能会使用结构字段名本身 顺便说一句语法是错误的 这是供参考的示例

  • 问题内容: 我是Go编程语言的新手,我有一个创建和解释器的任务,但是我遇到了以下问题: 我想将环境定义为: 但是我收到错误“无效的递归类型环境”。根据我的研究,我将父级更改为 Environment。但是现在,当我需要创建一个环境类型为var的新环境时,它会收到错误消息“无法将fun_Val.ds(环境类型)用作 环境值类型”。我正在如下创建环境: 我试图将这篇文章中的代码量限制在一定范围内,但是

  • 问题内容: 所以现在我有一个用于客户端连接的结构,如下所示 而且我还获得了ClientConn的地图,如下所示 因此,我在与clientList的每个连接上添加了一个新的ClientConn,但是我想做的是对clientList进行json处理,并获取一个ClientConn数组,其中包含其值,而不仅仅是键。 如果我做 然后我只是得到一个带有空对象的键,而我想要检索的是带有值和键的整个Client