草庐IT

INTERFACE

全部标签

go - 填充作为参数给出的接口(interface)类型的一部分(例如,为数据库/sql 实现 ScanAll)

我们如何实现一个函数,该函数将返回SQL查询产生的所有行并将它们转换为dest这是一个接口(interface)数组(可能无法像Scan一样工作)?我假设目标数组必须作为函数的参数给出。但是,我仍然不知道我应该如何完成实现:funcGetAll(querystring,destinterface{})error{rows,err:=s.db.Query(query)iferr!=nil{returnerr}deferrows.Close()forrows.Next(){vardestRow???/*donothaveatype.usingreflect.TypeOf(dest).Ele

go - 结构片不能插入golang中的接口(interface)片

这个问题在这里已经有了答案:sliceofstruct!=sliceofinterfaceitimplements?(6个答案)关闭4年前。我有Tag结构和TableAbstruct接口(interface),如下例所示。[标签结构]typeTagstruct{Idint`db:"id"`Namestring`db:"Name"`}func(tagTag)Serialize()[]string{...}[TableAbstruct接口(interface)]typeTableAbstructinterface{Serialize()[]string}Xxx()函数返回[]TableAb

go - 具有接口(interface)类型和结构指针的 channel 作为具体类型

我正在尝试概括我的一些代码,我认为我可以将一些通用代码放在一起,但我遇到了类型系统问题。假设我有一个这样的界面:typeHashableinterface{GetHash()[]byte}我有几个像这样的具体类型:typeTransactionstruct{Hash[]byte`protobuf:"bytes,1,opt,name=hash,proto3"json:"hash,omitempty"`}func(m*Transaction)GetHash()[]byte{ifm!=nil{returnm.Hash}returnnil}请注意,这些是由protoc生成的,我可能无法轻易更改

json - 如何在不在Golang中定义结构的情况下读取json的 "interfaces"映射?

正在关注thistutorial我正在尝试在Golang中读取一个json文件。它说有两种方法可以做到这一点:使用一组预定义的结构解码JSON或使用映射[字符串]接口(interface)解码JSON{}因为我可能会有很多不同的json格式,所以我更喜欢即时解释它。所以我现在有以下代码:packagemainimport("fmt""os""io/ioutil""encoding/json")funcmain(){//OpenourjsonFilejsonFile,err:=os.Open("users.json")//ifweos.Openreturnsanerrorthenhand

Golang通用数据库单条记录转json

我想从数据库中检索记录并将其编码为json。我有大约30个不同的表,所以我想要适用于所有这些表的通用函数。我使用xorm进行数据库访问。我已经设法创建了检索数据的DRY函数,这主要归功于这个question&answer这有效,可以将所有记录编码为json:typeuserstruct{Idint64`json:"id"`Namestring`json:"name"`}//typepost//etc.typetableRecordstruct{PrimaryKeystringDatainterface{}}varListOfTables=map[string]tableRecord{"

go - Go中如何正确使用组合

我是新来的;有两个具有相似行为的文件,并被告知使用组合来避免重复代码,但不太理解码合的概念。这两个文件具有共同的功能,但又各有不同。player1.gopackagegametypeconfPlayer1interface{Set(string,int)boolMove(string)boolInitialize()bool}funcPlay(confconfPlayer1)string{//codeforPlayer1}//...otherfuncsplayer2.gopackagegametypeconfPlayer2interface{Set(string,int)boolMov

go - 捕获嵌套接口(interface)值

我正在尝试获取通过请求获得的json的值。但我没有得到值foo1,我已经尝试了所有方法但我无法得到该值。出现无效操作错误。你能帮帮我吗?{"result":{"foo1":1751,"foo2":"2018-12-17T00:00:00-02:00",}}url:="mysite"req,_:=http.NewRequest("GET",url,nil)res,_:=http.DefaultClient.Do(req)deferres.Body.Close()body,_:=ioutil.ReadAll(res.Body)byt:=[]byte(string(body))vardatm

go - 创建具有类型接口(interface)的映射以通过 URL 参数接受任意数据类型

我想将URL参数从字符串转换为正确的数据类型并将其存储在map中。我认为类型应该是[]interface,用于存储多种数据类型的列表。我正在创建一个键值存储,但目前它只存储字符串。我已经阅读了关于将数据转换为字节的GOB,但不明白。我已经尝试过类型断言,但是,我不相信在我的情况下这会起作用,因为数据来自默认情况下已经是字符串的URL。如何检测条目是否为字符串、整数、bool值等?map:vardatamap[string][]string调用handleCreate函数的主函数中的handleFuncr.HandleFunc("/insert/{key}/{value}",handle

string - 如何使用带界面的 Sscan

我正在使用fmt.Sscan将字符串转换为任何类型,这是我正在做的:packagemainimport("fmt""reflect")functest()interface{}{return0}funcmain(){a:=test()//thiscouldbeanytypev:="10"//thiscouldbeanythingfmt.Println(reflect.TypeOf(a),reflect.TypeOf(&a))_,err:=fmt.Sscan(v,&a)fmt.Println(err)}此代码失败是因为Sscan不接受接口(interface)作为第二个值:can'tsc

go - 在 Go 中按值传递还是按引用传递效率更高?

假设我有一个实现如下接口(interface)的结构:typeIFaceinterface{Method1()Method2()Method3()}typeFacestruct{Prop1stringProp2int}//IFaceimplementationhere...现在,如果我有接受IFace的方法,将其设计为接受指向该值接口(interface)的指针是否更好?接受指针:funcDummyMethod(f*IFace){(*f).Method1()}按值:funcDummyMethod(fIFace){f.Method1()}我的第一个猜测是因为这些是结构体,所以按值传递可能