问题标签 [go-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
14908 浏览

go - Empty Interfaces in Golang

Edit: This is not the right way to use interfaces in Go. The purpose of this question is for me to understand how empty interfaces work in Go.

If all types in Go implement interface{} (empty interface), why can't I access the name field in the Cat and Dog structs? How can I get access to the name field of each struct through the function sayHi()?

0 投票
1 回答
31 浏览

go - 定义返回接口切片的函数类型

我想定义一个返回接口切片的处理程序类型,类似于以下示例:

但是,如果我运行它,我会得到

我将如何定义一个返回接口切片的通用函数类型?(我已阅读https://github.com/golang/go/wiki/InterfaceSlice但我不确定如何在此处应用它)。

0 投票
1 回答
89 浏览

go - 如何在 GO 中将 interface{} 转换为地图

我是 Go 新手,我正在尝试学习如何将 interface{} 转换为 Map。这是我正在尝试实现的示例。

游乐场链接: https: //play.golang.org/p/3jhKlGKO46Z

谢谢您的帮助。

0 投票
1 回答
44 浏览

go - Golang 访问通用结构的数据元素

我将有一个应用程序,其中包含许多遵循 Req/Rsp 设计的消息。下面实现的是消息 Foo 的单个 Req/Rsp。Req 将遵循用于处理消息并返回响应的通用接口。所有 Rsp 消息都将嵌入 MHRSP 结构。我想在 ProcessRequest 方法之外设置响应状态。我遇到的问题是由下面标记的代码块导致的运行时错误Problem Area

panic: interface conversion: interface {} is *main.FooRsp, not main.MHRSP

由于我将有很多消息,而不仅仅是 FooRsp,因此转换为 FooRsp 不是解决方案,所以问题是,我如何以通用方式处理这个问题(即能够为任何 Rsp 设置成功和错误消息)?

使用 GDB Online 编译的代码:https ://www.onlinegdb.com/online_go_compiler

0 投票
1 回答
55 浏览

go - 如何实现下面描述的功能

我需要做这样的事情:

ReadMapper然后我需要分配WriteMapper一些在项目其他地方定义的功能。有没有办法在 Go 中做这样的事情?给他们分配职能?

然后,我需要另一个映射,并希望映射器作为值类型,并希望执行如下操作。

然后从另一个文件中,我想这样做:

编辑:我从未在问题中要求语法。我只是想知道是否有更好的方法来做到这一点,因为我是 Go 新手。我同意我对 Go 的语法不是很熟悉,我将不得不阅读文档(不是一次,而是多次)。

0 投票
1 回答
159 浏览

go - 满足多个接口的可链接结构方法?

我需要使用几乎相同的字段和方法创建多个具有相同操作的结构。我想,与其这样做,不如创建一个结构并使用接口来限制交互。效果很好!现在的问题。我希望这些方法是可链接的。为此,方法需要返回对结构的引用。这样做之后,所有退货都抱怨(struct) does not implement <interface> (wrong type for <method> method). 这是预期的。

问题是,是否可以使用具有多个具有可链接方法的接口的单个​​结构?还是为每个接口创建单独的、重复的结构是唯一的方法?

我想过使用组合,但我仍然需要定义将调用嵌入式结构方法的方法,在这种情况下,创建新的纯结构没有区别。

示例问题:

https://play.golang.org/p/JrsHATdi2dr

0 投票
3 回答
1210 浏览

go - Golang 遍历接口映射

我正在尝试迭代 golang 中的接口映射,它具有以下结构,我可以使用 for 循环迭代到单个级别,但无法深入获取接口的值。

yaml

的输出

如下所示

我的尝试

0 投票
0 回答
200 浏览

go - 在 Go 中制作 AST

我正在为 go 中的自定义语言编写解析器。我的问题是语法树上的每个节点都根据其类型(无论是 anif或 avariableDef或 a funcDef)而不同,因此具有不同的值,但我需要有可以指向其中任何一个的指针,以赋予它树状功能.

有人建议使用interface, 类似于describe描述节点的方法(依赖于实现),但问题是它会根据节点返回不同的东西。(AfuncDef会给出args []variableDefand body []node,但 if 会给出cond binand body []node,而变量 def 会给出type typand name string

我最初是用 JS 编写的,并利用 JSON 的灵活性来发挥我的优势。我听说 Go 有内置的 JSON 支持,但我不认为我想走这条路。

0 投票
1 回答
48 浏览

go - 接口实现元素的范围

假设我有以下接口和两个实现它的结构:

正如您注意到的那样,两者都MyStructA实现MyStructBTmp,并且两者都有一个名为 ArrayOfItems 的属性。使用接口签名,我如何迭代两者都具有的属性?类似于:

注意:我不想在接口中添加另一个方法(即 getter/setter)来处理或定义ArrayOfItems

这可能吗?

0 投票
1 回答
102 浏览

go - Go接口:接口未实现,即使它是

有人可以向我解释为什么不允许这种实现吗?我有一个函数,它将函数定义为参数的接口。这会引发错误。