草庐IT

type-assertion

全部标签

go - 遍历 []interfaces{} 并获取每种类型的 channel 字段

我会先在脑海中尽可能清楚地说明这一点。我有一个接口(interface)和几个类型,它们通过声明一个方法来继承它。非常好的和聪明的继承方式。然后我有一个“super”类型Thing,所有其他类型都嵌入了它。Thing结构有一个Sizeint和一个Outchan属性我想了解的是为什么我可以从两个子结构中获取大小.GetSize()的值,但我在channel字段上却没有同样的成功.GetChannel()(*ndr,我用它来在goroutine和它们的调用者之间进行通信)...这里我得到t.GetChannel未定义(类型Measurable没有字段或方法GetChannel)它可能有助于

go - 使用 Golang 解决没有泛型的类型断言?

我正在使用gorm,它允许多种数据类型,例如int、uint、int8、uint8....然后我在模板中有一个这样的插件:f["UNIX2STR"]=func(tinterface{},fstring)string{switcht.(type){caseint:returntime.Unix(int64(t.(int)),0).Format(f)caseuint:returntime.Unix(int64(t.(uint)),0).Format(f)caseuint8:returntime.Unix(int64(t.(uint8)),0).Format(f)case*int:retur

go - 如何仅使用一种方法删除不同类型的 slice

我有2个函数,如下所示funcremoveL2McEntry(a[]api.L2McEntry,indexint)[]api.L2McEntry{a=append(a[:index],a[index+1:]...)elementreturna[:len(a)]}funcremoveVlagBasedGroup(a[]api.VlanPortBased,indexint)[]api.VlanPortBased{a=append(a[:index],a[index+1:]...)returna[:len(a)]}如您所见,这两个函数都在做同样的工作。但我需要将它们分开,因为函数的输出和输入

go - "Missing type in composite literal"结构中映射的匿名列表

编辑:编译错误在Missingtypeincompositeliteral与我的问题相同,它们的组成差异很大,以至于我不明白我将如何将解决方案应用到我的程序中,因此创建了这个问题。我是新来的,我正在尝试为我已验证可以成功调用的函数编写测试,如下所示:funcmain(){items:=[]map[string]int{map[string]int{"value":100,"weight":5,},map[string]int{"value":90,"weight":2,},map[string]int{"value":80,"weight":2,},}fmt.Println(KnapS

go - Go 中的 128 位 float - 相当于 C#'s "decimal"Type

简单的问题:是否有C#的decimal的等价物?输入Go标准库?我打算使用此类型与在某些端点返回小数的ODataAPI接口(interface),据我阅读,complex128不适合此行为(它的存储不同于花车) 最佳答案 标准库的math/big包括一个Floattype:AnonzerofiniteFloatrepresentsamulti-precisionfloatingpointnumber 关于go-Go中的128位float-相当于C#'s"decimal"Type,我们在S

arrays - 不能在赋值 : need type assertion 中使用字(类型接口(interface) {})作为类型字符串

我是Go的新手,出于某种原因我正在做的事情对我来说似乎不是很直接。这是我的代码:for_,column:=rangeresp.Values{for_,word:=rangecolumn{s:=make([]string,1)s[0]=wordfmt.Print(s,"\n")}}我得到了错误:不能在赋值中使用word(typeinterface{})作为类型字符串:需要类型断言resp.Values是一个数组数组,所有数组都填充有字符串。reflect.TypeOf(resp.Values)返回[][]interface{},reflect.TypeOf(resp.Values[0])

go - 检查值是否为 int

所以我将此有效负载发送到我的应用程序:{"name":"MatiasBarrios","age":123}我面临的问题是,当我测试name是否是一个字符串时,它工作得很好。但是无论我做什么,测试age是否为int总是返回false。ifgjson.Get(spec,"name").Exists(){if_,ok:=gjson.Get(spec,"name").Value().(string);!ok{n:=validator_error{Path:"_.name",Message:"shouldbeastring"}errors=append(errors,n)}}ifgjson.Ge

戈朗 : How to declare returned variables WITH TYPE?

在GO中,如何声明WITHTYPE函数的返回变量?例如我有这个代码dat,err:=ioutil.ReadFile("/tmp/dat")check(err)fmt.Print(string(dat))但我想要的是:vardat[]byte,errerror:=ioutil.ReadFile("/tmp/dat")check(err)fmt.Print(string(dat))然而,无论我如何尝试,我都只能得到这个输出syntaxerror:unexpectedcomma,expectingsemicolonornewlineor}我在没有IDE的情况下工作,随着变量数量的增加,必须将

从界面更改为所需类型

我有这个方法,我收到一个int64参数。该参数在某些区域使用,然后应该传递给另一个需要不同类型的方法(来自外部库):typeAcctInterimIntervaluint32我尝试将其转换为uint32但脚本提示它:invalidtypeassertion:...(non-interfacetypeintonleft).我还尝试将其转换为AcctInterimInterval但这次出现了不同的错误:interfaceconversion:interface{}isint,notmain.AcctInterimInterval到目前为止,这是我的测试代码:packagemainimpor

go - 不能使用 p[idx + 1 :] (type []Person) as type Person in append

这个问题在这里已经有了答案:cannotusetype[]runeastyperuneinappend(1个回答)关闭2个月前。packagemainimport("fmt")typePersonstruct{namestringageint}funcmain(){p:=[]Person{{"Kate",20},{"Simon",30},{"John",28},{"Lake",19},}n:=[]string{"Simon","Kate","Lake",}foridx:=0;idx我有上面的代码来删除pslice中显示在nslice中的人。但是在编译的时候出现了如下错误:./main.