草庐IT

Types-TypeScript

全部标签

types - Go中函数变量的类型

我想写一个函数,它接受一个指向任何类型函数的指针。我可以这样做:funcmyFunc(finterface{})...但这将允许非函数值。有什么方法可以将类型限制为任何函数? 最佳答案 假设您的字面意思是任何函数,您可以执行类型切换(这将是特定的):switchv.(type){casefunc()int:casefunc()string:}或者您可以使用reflect包来确定类型:ifreflect.TypeOf(v).Kind()!=reflect.Func{//errorhere}这是一个运行时解决方案。除此之外,你无能为力。

types - Go中函数变量的类型

我想写一个函数,它接受一个指向任何类型函数的指针。我可以这样做:funcmyFunc(finterface{})...但这将允许非函数值。有什么方法可以将类型限制为任何函数? 最佳答案 假设您的字面意思是任何函数,您可以执行类型切换(这将是特定的):switchv.(type){casefunc()int:casefunc()string:}或者您可以使用reflect包来确定类型:ifreflect.TypeOf(v).Kind()!=reflect.Func{//errorhere}这是一个运行时解决方案。除此之外,你无能为力。

types - 在 Go 中实现堆栈以存储结构的正确方法是什么?

我正在尝试创建一个堆栈来存储一系列霍夫曼树结构。目前我正在使用我在github上找到的实现。packageutiltypeitemstruct{valueinterface{}next*item}//Stacktheimplementationofstack//thisstackisnotthreadsafe!typeStackstruct{top*itemsizeint}//Basicstackmethods...问题是,当我将霍夫曼树结构存储在堆栈中时,我无法使用霍夫曼树的任何字段,例如左/右child。packagehuffmantreetypeHuffmanTreestruct

types - 在 Go 中实现堆栈以存储结构的正确方法是什么?

我正在尝试创建一个堆栈来存储一系列霍夫曼树结构。目前我正在使用我在github上找到的实现。packageutiltypeitemstruct{valueinterface{}next*item}//Stacktheimplementationofstack//thisstackisnotthreadsafe!typeStackstruct{top*itemsizeint}//Basicstackmethods...问题是,当我将霍夫曼树结构存储在堆栈中时,我无法使用霍夫曼树的任何字段,例如左/右child。packagehuffmantreetypeHuffmanTreestruct

戈朗 : how is "func() interface {}" and "func() *MyStruct" incompatible types?

假设我有一段代码,其中一个函数接受另一个函数作为参数:typePersonstruct{Namestring}funcpersonBuilder()*Person{return&Person{Name:"John"}}funcprintRetrievedItem(callbackfunc()interface{}){fmt.Print(callback());}funcdoStuff(){printRetrievedItem(personBuilder);}这导致错误cannotusepersonBuilder(typefunc()*Person)astypefunc()interfa

戈朗 : how is "func() interface {}" and "func() *MyStruct" incompatible types?

假设我有一段代码,其中一个函数接受另一个函数作为参数:typePersonstruct{Namestring}funcpersonBuilder()*Person{return&Person{Name:"John"}}funcprintRetrievedItem(callbackfunc()interface{}){fmt.Print(callback());}funcdoStuff(){printRetrievedItem(personBuilder);}这导致错误cannotusepersonBuilder(typefunc()*Person)astypefunc()interfa

types - 什么时候类型应该是包含另一种类型的结构,什么时候它应该只是 "extend"(?)那个类型?

我目前正在通过rosalindproblems学习Go(基本上是一堆生物信息学相关的代码套路)。我目前正在用一种类型表示一条DNA链:typeDNAStrandstruct{dnabyte[]}我最初的原因是封装字节slice,这样我就知道它只包含表示核苷酸的字节:'A'、'C'、'G'、'T'。我意识到这显然不能保证,因为我可以简单地做:DNAStrand{[]byte("foobar")}并且不再保证我的dna链包含一个字节数组,其中的元素仅来自这四个字节。因为我的结构只包含一个字节数组,这样做更好/更理想吗:typeDNAStrand[]byte还是让类型包含dna链更好?对于何

types - 什么时候类型应该是包含另一种类型的结构,什么时候它应该只是 "extend"(?)那个类型?

我目前正在通过rosalindproblems学习Go(基本上是一堆生物信息学相关的代码套路)。我目前正在用一种类型表示一条DNA链:typeDNAStrandstruct{dnabyte[]}我最初的原因是封装字节slice,这样我就知道它只包含表示核苷酸的字节:'A'、'C'、'G'、'T'。我意识到这显然不能保证,因为我可以简单地做:DNAStrand{[]byte("foobar")}并且不再保证我的dna链包含一个字节数组,其中的元素仅来自这四个字节。因为我的结构只包含一个字节数组,这样做更好/更理想吗:typeDNAStrand[]byte还是让类型包含dna链更好?对于何

go - 解析 go src,尝试将 *ast.GenDecl 转换为 types.Interface

我正在尝试解析包含接口(interface)的源文件并找到接口(interface)定义的方法/签名。我正在使用ast来解析文件。我能够获得一些高级声明,例如*ast.GenDecl,但我无法进入下一个级别来确定此类型是否为接口(interface)及其方法是什么。这是我试图解决的脚手架类型问题,用户定义服务的接口(interface),工具将构建服务的骨架packagemainimport("fmt""go/ast""go/parser""go/token""reflect")funcmain(){fset:=token.NewFileSet()f,_:=parser.ParseFi

go - 解析 go src,尝试将 *ast.GenDecl 转换为 types.Interface

我正在尝试解析包含接口(interface)的源文件并找到接口(interface)定义的方法/签名。我正在使用ast来解析文件。我能够获得一些高级声明,例如*ast.GenDecl,但我无法进入下一个级别来确定此类型是否为接口(interface)及其方法是什么。这是我试图解决的脚手架类型问题,用户定义服务的接口(interface),工具将构建服务的骨架packagemainimport("fmt""go/ast""go/parser""go/token""reflect")funcmain(){fset:=token.NewFileSet()f,_:=parser.ParseFi