草庐IT

INTERFACE

全部标签

go - 如何遍历 Golang 中的所有 YAML 值?

我想了解Golang中的嵌套映射。我有一个如下所示的map,如何遍历所有键?Data:-name:"foo"bar1:0k1:val1k2:val2val3bar2:1k3:val4k4:val5k3:val4k4:val5 最佳答案 您必须将数据解码到map(map[interface{}]interface{}或map[string]interface{})然后您必须检查键值的类型。您可以使用yaml.v2包,并且可能有更清晰的界面有助于检测值的类型。否则检查迭代键并打印值的示例:packagemainimport("fmt""

go - 对项目集合执行操作

在我的实际代码中,我正在使用encoding/xml解析一个XML文档,我基本上有一堆如下形式的嵌套结构——所有这些都可能出现多次,除了顶级statements元素:statementsstatementopcodeargsprepost我是Go的新手,我显然误解了interface{}(空接口(interface))的工作原理:.\stmtgen.go:58:cannotuseprint_name(typefunc(Statement))astypefunc(interface{})inargumenttoperformAction.\stmtgen.go:58:cannotuses

go - 如何将接口(interface)数组转换为 float

bound:=[]interface{}{1.00,1.00,1.00,1.00}new_bound:=bound.([]float32)log.Println(new_bound)如何将接口(interface)数组转换为float组?invalidtypeassertion:bound.([]float32)(non-interfacetype[]interface{}onleft)在实际项目中panic:interfaceconversion:interfaceis[]interface{},not[]float32 最佳答案

go - 通过结构嵌入实现的接口(interface)

我对以下程序的实验感到困惑,这些程序分别与使用结构嵌入、命名类型和指针接收器实现接口(interface)相关:packagemainimport"fmt"typeMyIntinterface{mytest()}typeBasestruct{}func(b*Base)mytest(){fmt.Println("Frombase")}typeDerivedstruct{Base}typeDerived2struct{*Base}funcmain(){//Onlythisonehasproblem//However,ifwechangemytest'sreceiverfrom*Baseto

function - 将变量 []interface{} 转换为变量 ...interface{} in go

我正在使用gomysql库来执行多个数据库任务。鉴于我想在mysql库上编写一个包装器包,我发现自己陷入了以下情况:我有一个具有以下签名的方法:func(db*MySQL)Insert(querystring,args...interface{})(int64,错误)此方法从具有以下签名的库中调用db.Exec函数:func(db*DB)Exec(querystring,args...interface{})(Result,error)似乎当我调用我的方法时Insert("somequery",1,"test")values...interface{}被翻译成[]interface{}

go - 与接口(interface)相对的 var 的反射表示。

我试图理解反射值的表示:typeSstruct{Fstring`species:"gopher"color:"blue"`}varxfloat64=3.4v:=reflect.ValueOf(x)fmt.Println("v=",v)//v=3.4s:=S{}ss:=reflect.ValueOf(s)fmt.Println("ss=",ss)//ss={}我理解反射接口(interface)值的表示是一个双词对,它给出了一个指向类型信息的指针和一个指向关联值的指针。什么是变量的反射表示。它只是值吗?如果是,下面的代码如何确定类型:fmt.Println("type:",reflect

Golang 结构/接口(interface)

我正在尝试做一些事情来使SQL结果动态结构化,基本上我想通过传递行和结构(以获取数据类型并创建一个)并返回接口(interface)数组来运行一个函数。有人知道我该怎么做吗?我不想将直接“用户”结构作为参数传递..那不是动态的typeUserstruct{Id_userint`json:"id_user"`Namestring`json:"name"`Emailstring`json:"email"`Usernamestring`json:"username"`}funcmain(){varuserUserrows,_:=db.Query("SELECTid_user,name,ema

go - 转换 map 类型

我正在尝试编写一个通用函数来获取map的键,如下所示:funcMapKeys(theMapmap[interface{}]interface{})([]interface{},error){iftheMap==nil{returnnil,errors.New("MapKeysargisnil")}varkeys=make([]interface{},len(theMap),len(theMap))i:=0foridx,_:=rangetheMap{keys[i]=idxi++}returnkeys,nil}A)有更好的方法吗?和B)调用此函数时,如何将原始map类型转换为map[int

go - 我的可组合性方法是 Go 惯用的吗?

我在Playground上创建了这个:https://play.golang.org/p/Jj4UhA8Yn7我也将粘贴下面的代码。问题围绕着我的可组合性方法是否是我应该考虑的可行的、好的Go代码,或者我是否错误地考虑它并且应该考虑更符合惯用的Go的东西。我的目标是使用此模式创建“逻辑”层,用包装层不需要知道的额外逻辑来装饰底层。作为一个粗略的例子,我可能有这些“层”接口(interface)层——一组定义“模型”的接口(interface)简单的结构层——只保存数据库中的数据,满足上述接口(interface)验证层-包装来自接口(interface)层的接口(interface)并

go - Golang中如何确定接口(interface)的方法集?

如何打印下面接口(interface)的方法集?typeSearcherinterface{Search(querystring)(foundbool,errerror)ListSearches()[]stringClearSearches()(errerror)}这样SearchListSearchesClearSearches打印出来了吗?(不知道实现它的具体类型)。 最佳答案 reflect包是执行此操作的正确工具。使用反射可以在事先不知道类型的情况下获取变量的类型信息。这是一个代码片段,显示了如何获取接口(interface