草庐IT

TS-枚举类型enum

全部标签

go - 来自嵌入式类型的复合文字和字段

我正在编写一个示例程序来回答这里关于SO的另一个问题,发现自己对以下代码无法编译这一事实感到有些困惑;https://play.golang.org/p/wxBGcgfs1opackagemainimport"fmt"typeAstruct{FNamestringLNamestring}typeBstruct{A}func(a*A)Print(){fmt.Println(a.GetName())}func(a*A)GetName()string{returna.FName}func(b*B)GetName()string{returnb.LName}funcmain(){a:=&A{F

interface - Go:工厂返回指针和接口(interface){}类型

考虑以下工厂:GoplaygroundtypeTypeAstruct{placeholderint}funcNewTypeA()*TypeA{returnnew(TypeA)}funcmain(){factory:=make(map[string]func()interface{})factory["TypeA"]=NewTypeA}这给了我以下错误:cannotuseNewTypeA(typefunc()*TypeA)astypefunc()interface{}inassignment这很清楚。我认为interface{}可以与指针匹配。我找到了这个解决方案:Goplaygroun

go - 为什么我会收到非数字类型 *int 错误?

我在下面的示例中遇到非数字类型*int错误,为什么?funcmain(){count:=0for{counting(&count)}}funccounting(count*int){fmt.Println(count)count++} 最佳答案 您需要取消引用指针:packagemainimport("fmt")funcmain(){count:=0fori:=0;i 关于go-为什么我会收到非数字类型*int错误?,我们在StackOverflow上找到一个类似的问题:

function - 如何使用 interface{} 作为灵活的函数参数和返回类型?

我是Go的初学者,我现在正在编写一个可以调用API的函数。该函数接收一部分url(/user、/account等)和将返回的json转换为的结构(结构User或Account作为参数。所以我现在有这个:func(self*RestClient)request(actionstring,return_typeinterface{})interface{}{res,_:=goreq.Request{Uri:self.url+action}.Do()varitemreturn_typeres.Body.FromJsonTo(&item)returnitem}我尝试使用(Index是返回类型的

go - 接口(interface)类型中的新功能不起作用

如果我有这样的接口(interface)类型:typeMessageinterface{New()*MessageGet()string}和这样的结构:typeEntitystruct{}func(e*Entity)New()*Entity{returne}func(eEntiy)Get()string{return"hi"}实体将不是消息类型,除非我删除New()*Message。有人可以向我解释为什么这不起作用和/或我的问题出在哪里吗? 最佳答案 Entity要实现你的接口(interface),它必须严格遵守接口(interf

json - 为什么 JSON 解析不会因传递给 Decode() 的完全不同的类型而失败?

我想从API解析以下数据结构:typeOrderBookstruct{Pairstring`json:"pair"`UpdateTimeint64`json:"update_time"`}typedepthResponsestruct{ResultOrderBook`json:"result"`//doesn'tmatterhere//Cmdstring`json:"-"`}当我解析以下内容时:data:=`{"error":{"code":"3016","msg":"交易对错误"},"cmd":"depth"}`它不会失败。为什么?完整源代码(playground)packagema

go - 如何检查 errors.Errorf() 中的类型错误?

调用fmt.Printf等字符串格式化函数似乎是Go编译器的弱点。我最终遇到了很多错误(重构后使用了错误的格式化程序,忘记包含所有参数),这些错误只会在运行时显示出来。所以我每次写这些的时候都不得不眯着眼睛。我今天做了一些研究,发现了gotoolvet,它似乎适用于fmt.Printf,但它不会捕获errors.Errorf中的错误(见下文)。import"github.com/pkg/errors"funcReturnError(sstring,iint)error{//Swap%dand%s,andforgettoincludethesecondargumentreturnerro

go - 使用反射确定类型是否为字符串

这里有一些关于如何在运行时确定对象类型的现有答案..godhelpusifreflect.TypeOf(err)==string{}不编译ifreflect.TypeOf(err)=="string"{}既不是那个也不是这个:ifreflect.TypeOf(err).Kind()=="string"{}我们如何做到这一点?如果我使用其中一个答案给出的typeof函数,我会得到: 最佳答案 比较字符串ifreflect.TypeOf(err).String()=="string"{fmt.Println("hello")}或使用ty

go - sync.Pool 新函数中是否需要返回指针类型?

我看到了issue在Github上说sync.Pool应该仅与指针类型一起使用,例如:varTPool=sync.Pool{New:func()interface{}{returnnew(T)},}有意义吗?returnT{}怎么样,哪个是更好的选择,为什么? 最佳答案 sync.Pool的全部意义在于避免(昂贵的)分配。大型缓冲区等。您分配一些缓冲区,它们保留在内存中,可供重用。因此使用指针。但在这里,您将在每一步都复制值,从而违背了目的。(假设您的T是一个“普通”结构,而不是像SliceHeader这样的东西)

go - 如何在go中动态更改函数参数类型

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭3年前。Improvethisquestion我有一个程序如下。我正在尝试动态更改函数参数的类型,因为我正在使用的另一个库需要传递具有具体类型的myMethod签名而不是该接口(interface)来进行正确的解码。在Go中是否有可能动态生成一个函数或匿名函数,其参数类型是动态生成的,或者可能更改函数的参数类型?packagemainimport("fmt""reflect")typeMyTypeinterface{doThis()}type