我有一个struct<code>Direction</code>,它的<code>值</code>类型为string方向
应为N
、S
W
type Direction struct {
value string
}
启发于这个问题的一个答案:Go是否有类似Python的“if x in”构造?我想以有效的方式创造方向的一个好方法是这个:
func NewDirection(direction string) Direction {
switch direction {
case "N","S","W","E": return Direction{direction}
}
panic("invalid direction")
}
但这对我来说还不够,因为我仍然可以创建无效的方向:
d := Direction{"X"}
我还发现了这篇关于在go中强制使用构造函数的有趣文章。阅读这篇文章,我可以看到有必要使用另一个包。例如,我可以在主包中有一个“受保护的”结构吗?
你已经按照惯例做了几乎所有你应该做的事情:
现在,包的用户无法修改该字段,并且 constrictor 的存在清楚地表明应该调用它来创建有效的实例。这是标准库设置的约定。
当然,还有其他方法可以让值更难失效,但这本质上只是浪费时间,为了与假想对手进行无法获胜的军备竞赛而使代码过于复杂。
如果有人不理解这种语言,也不阅读文档,那么他们总是会找到误用它的方法。如果他们积极地试图破坏自己,你没有办法阻止他们,也没有理由阻止他们。
包是Go中代码组织的最小功能单元。例如,在文件级别,没有办法保护字段。即使是同一个包中的文件也有效地运行,就好像它们所有的代码都在同一个文件中一样。因此,与构造函数相同的包中的任何代码都将具有与构造函数相同的权限。
问题内容: 我是Java的新手,我试图找到一种方法来在C语言中存储诸如结构之类的信息。例如,说我想让一名程序雇用员工。它将从用户那里获得一个名字,姓氏和ID号并将其存储起来。然后,用户可以根据条件查看该信息(例如,如果数据库有多于1名员工)。有没有人建议这样做的最佳方法? 问题答案: C中的结构就像Java中的类一样,功能更强大,因为Java中的类可以包含方法,而C ++可以。您创建一个新类。例如
我有一个用于父级的构造函数: 稍后,我使用关键字创建一个对象: 我正在尝试使用defineProperty添加属性 但是,当我试图访问时,它返回。同样,当我在控制台中打印整个对象时,该属性仍然保持。 我错在哪了?
问题内容: 在此结构定义中: 字符串 “ json:message” 的含义是什么,以及如何访问它(如果可访问)。先感谢您。 问题答案: 这些是结构标记。包使用此struct标记 将对象转换为JSON,并将 JSON字符串转换为对象 在将一个结构封送(编码)为JSON字符串时,它将查找此struct标记以分配 键名,如果不存在,则它可能会使用结构字段名本身 顺便说一句语法是错误的 这是供参考的示例
Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性: 字段拥有自己的类型和值; 字段名必须唯一; 字段的类型也可以是结构体,甚至是字段所在结构体的类型。 使用关键字 type 可以将各种基本类型定义为自定义类型,基本类型包括整型、字符串、布尔等
我想让我的子组件有一个ref,但是我不希望用户在创建组件时必须指定ref。所以说我有这样的东西: 我希望父组件能够访问子组件的状态。最简单的方法是为每个组件添加一个ref,但我希望这是在函数中完成的,以便从最终用户那里抽象出它,因为我希望这些组件被通用化。 有没有一种干净的方法可以让父组件访问子组件的状态,例如当创建子组件时,您有以下内容: 因此,在父类内部,我可以执行以下操作: 因此,我希望能够
问题内容: 我想我需要反射包才能做到这一点。说我有一个像这样的结构: 说我想生成ResolutionValue结构的JSON表示…是否有某种方法可以创建不实例化的JSON表示? 问题答案: 即使使用反射,也需要使用实际值来获取类型。因此,我建议您只使用类型的零值。