我是Go语言的初学者。我可能认为多年以来其他语言都太传统了,但这就是我想在Go中做的事情。假设以下用例
在Go中可行吗?
简短的答案是:不,那是行不通的
Go是一种严格类型的语言。这使链接器可以省去应用程序未使用的类型定义,方法和函数。
这意味着,除非在某处引用并使用了某个类型(例如struct A),否则将省略该类型。
但是在您的评论中,您提到您不想要类型,而是想要实现接口的任何类型的当前 实例 。
这也不可能。
另类
我的建议是创建一个全局地图(或切片):
var instMap = html" target="_blank">map[string]StartStopper
并让每个结构体使用init函数向该映射添加实例,该init函数将在应用程序开始时自动调用:
type A struct {}
func init() {
instMap["A"] = new(A)
}
然后,当您要启动所有实例时,只需遍历地图并调用Start()
编辑
如果不是每种类型一个实例,而是每种类型都有多个实例,那么每当创建一个新实例时,您都必须将其添加到地图(或切片)中。而且,您将不得不记住当不再使用实例时,将从地图中删除该实例,否则该实例将不会被垃圾收集器处理。
我正在尝试从我的GAE应用程序中的数据存储中删除某个类型的所有实体。我有以下一行: 我看到以下例外情况: 我假设我没有正确地进行别名操作,因为它误将DELETE当作一个实际的类。我尝试在没有别名的情况下只执行操作,但似乎不起作用。
我想从我的api发送一个响应,所有响应都有一个统一的结构 我希望数据能够成为不同的结构,而不仅仅是单个数据结构。我可以说我没有正确使用这种模式。完成这种事情的正确方法是什么?有没有办法让结构字段能够成为具有相同键的任何类型?
我制作了一个简单的程序,根据公式中的3个数字计算增量。但是,小数点后的分数和数字(如3.33、3/4)有问题。如果我将其替换为任何字母,则会出现错误: 线程“main”java中出现异常。util。java上的InputMismatchException。base/java。util。扫描仪。throwFor(Scanner.java:939)访问java。base/java。util。扫描仪。下
问题内容: 当我运行下面的代码片段时,它会引发错误 a.test未定义(类型interface {}是没有方法的接口) 看来类型开关没有生效。 如果我将其更改为 没关系 问题答案: 这是规范(强调我的)定义的正常行为: TypeSwitchGuard可以包含一个简短的变量声明。使用该格式时,将在每个子句中隐式块的开头声明变量。 在大小写正好列出一种类型的子句中,变量具有该类型。 否则,变量具有Ty
问题内容: 我有以下几种类型: 我可以使用use ,但是我 不能 使用 似乎可以嵌入语法,但是使用它无效吗? 问题答案: 嵌入式类型是(未命名的)字段,由不合格的类型名称引用。 规格:结构类型: 使用类型但没有显式字段名称声明的字段是 匿名字段 ,也称为 嵌入式 字段或该类型在结构中的嵌入。必须将嵌入式类型指定为类型名称或指向非接口类型名称的指针,并且本身不能为指针类型。 非限定类型名称充当字段名
背景:我对编码非常陌生。我正在写一个基于文本的单人RPG作为学习方法。 所以,我有一个ArrayList,我用它来存储项目类的对象。我想根据扫描仪的用户输入检查ArrayList是否存在项目(项目类中的对象)。 如果可能的话,我认为如果我将一个项目传递给开关(基于用户输入),而不是一个字符串,而我后来必须“翻译”ArrayList才能使用它,那会更干净。 可能吗?或者我必须按照我在下面代码中写出来