草庐IT

INTERFACE

全部标签

依赖接口(interface)的golang接口(interface)

我不确定这些应该是两个单独的问题还是一个,但在我看来它是一个分为两部分的问题-应该如何使用go接口(interface)?我有这两个斗争:接口(interface)的方法是全局作用域的:如果我有接口(interface)A和接口(interface)B,它们都实现了相同的方法Foo,但具有不同的参数或返回类型,我无法从同一类型同时实现这两个方法。例如,我在一个返回类型为[]byte的接口(interface)中有GetBytes()方法,在另一个接口(interface)中有([]byte,error)我应该如何克服这个问题?我遇到的另一个问题是当我尝试定义接口(interface)时

go - array转interface{}转slice,结果不能用len()等方法

我试过了:vara[100]intfuncfun1(srcinterface{})interface{}{src,_=src.([100]int)//changed[]intto[100]intfmt.Println(reflect.TypeOf(src))//result:[]intdest:=make([]int,len(src))returndest}出现错误:message:'invalidargumentsrc(typeinterface{})forlen'但是如果我重新定义一个变量:vara[100]intfuncfun1(srcinterface{})interface{

go - 错误接口(interface)的使用方法

我有如下来源:typeRecordstruct{Messagestring`json:"message"`Servicestring`json:"service"`Successbool`json:"success"`Errorstring`json:"error"`}func(zp*Zephyr)Write(err...*error){iflen(err)>0{errPtr:=err[0]iferrPtr!=nil&&*errPtr!=nil{//erroroccurred,setsuccesstofalseandErrortotheerrormessagezp.Success=fa

arrays - 创建根据输入 slice 参数执行不同操作的函数

我刚开始学习Go语言,我想构建一个从slice中选择随机子序列的函数。但是,我不知道这个slice可以存储什么类型的值,这些可以是整数、字符串或某个结构的元素。例如,假设我必须结构:typepersonstruct{namestringageint}typeanimalstruct{namestringageintbreedstring}现在,我想按如下方式构建函数getRandomSequence:给定sliceS和长度l作为参数,该函数返回一个slice,其中包含从sliceS中随机选择的l个元素。我遇到的问题是-如何制作它函数适用于任何可能的slice。我尝试执行以下操作:fun

go - 如何使结构接受两种类型之一作为参数?

我有一个结构DbConnector,我想将其用作与数据库通信的代理。这个结构有方法Init(db*sql.DB)。根据条件,我希望能够使用另一个结构初始化它,例如用于测试的DummyDatabaseConnection。如何定义Init()的签名,以便它接受*sql.DB或*DummyDatabaseConnection? 最佳答案 定义一个接口(interface),其中包含一些您需要为*sql.DB和*DummyDatabaseConnection调用的方法typeDBInterfaceinterface{Ping()error

go - 如果不是隐式调用接口(interface),如何访问函数?

下面是一个结构Config,它包含一个匿名函数ReturnNewAddress,它返回一个net.Conn接口(interface)。ReturnNewAddress然后用于返回“地址”。typestructConfig{ReturnNewAddressfunc(net.Conn,error)}在下面调用匿名函数ReturnnewAddress的地方,请注意cfg是Config的一个实例。addr,err:=cfg.ReturnNewAddress()所以我的问题来了-考虑到接口(interface)拥有许多不同的功能,接口(interface)net.Conn如何知道要使用什么功能?

dictionary - 内置 map 方法引用

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion请帮助查找内置map类型方法列表。来源还可以。我在不同的示例中看到了Add和Set,我想知道它们之间的区别。找到以下内容但没有提供任何帮助:https://golang.org/src/runtime/hashmap.go-实现,但接口(interface)在哪里?https://blog.golang.org/go-maps-in-action-关于map的文章,但找不到完整的方法列表。

go - 如何在接口(interface)上使用 strings.Contains

我收到以下代码行的panic。接口(interface)转换:interface{}是[]string,不是string我的界面是一个字符串映射。查找图形界面是否包含特定字符串的最佳方法是什么。ifstrings.Contains(figure["figure1"].(string),"one"){} 最佳答案 这里你的类型断言是错误的,你正试图从你界面上的键访问一个值,它还没有作为映射访问,所以这不能作为interface{}工作。不可索引。相反,您要做的是将整个界面转换为map[string]string像这样stringMap

go - 鸭子打字 : How to implicitly convert from an interface to another interface in go

我是新手,我希望在用户和提供者之间使用(非常)松散耦合的API制作两个包。为此,我希望利用go的隐式实现接口(interface)和隐式转换的能力。提供者和用户都有自己定义的接口(interface)(例如,提供者返回一个提供者.A,用户接受一个用户.A)。使用这种模式,我可以从一种类型转换为另一种类型,而不是从另一个包中导入接口(interface)。这适用于简单的接口(interface),但一旦方法将接口(interface)作为输入,从一种类型到另一种类型的转换就变得不可能了。为什么go不允许这种转换?有什么解决方法吗?工作示例:packagemain//Providertyp

arrays - 以编程方式创建嵌套数组

我想测试我的序列化格式的健壮性,并想序列化一个嵌套数组。Serialization实际上会在某个时刻消亡,但我不知Prop体消亡到什么程度。现在我只是手动定义一个大数组,但我想以编程方式进行,所以我可以弄清楚深度何时过高。为每次迭代更改代码是乏味的...l:=[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]