草庐IT

树形结构

全部标签

GO: slice 独特的结构有效的可重用实现

我经常需要根据任意equals函数去除重复项。我需要实现:速度快且内存有效(不创建map)可重用且易于使用,想想slice.Sort()(github.com/bradfitz/slice)不需要保持原slice的顺序或保留原slice最好尽量减少复制这可以在go中实现吗?为什么这个函数不是我所知道的某些库的一部分?我正在寻找例如godash(github.com/zillow/godash)实现使用map并且不允许任意小于和等于。这是大致的样子。测试:import("reflect""testing")typeblastruct{IDstring}typeblas[]blafunc(

go - 为什么 Slices 在传递给 Go 中的函数时内部结构为 "passed by reference"?

packagemainimport"fmt"funcmain(){a:=SomeType{myslice:[]int{1,2,3},decimal:2.33}for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)addOne(a)for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)}typeSomeTypestruct{myslice[]intdecimalfloat32}funcaddOne(sSomeType){s.myslice[0]++s.dec

pointers - 在 Go 中修改结构中的结构 slice

在下面的示例中,person有一段friendship,我尝试将一个friendship初始化为指向另一个的指针person对象,但由于某种原因它失败了,结果是没有人有任何friendship。我没有在我应该在的地方使用指针吗?packagemainimport("fmt""math/rand")typefriendshipstruct{friend*person}typepersonstruct{nameintfriendship[]friendship}funccreatePerson(idint)person{returnperson{id,make([]friendship,0

go - 使用反射检索结构变量的注解

在go中,是否可以检索结构的变量注释?考虑以下结构:typeATypestruct{IDstring`xml:"my_id"`Datestring`xml:"creation_ts"`}如何使用反射检索ID字段的xml:"my_id"部分?以下将打印变量的名称、类型和值,但不打印注释。s:=reflect.ValueOf(&aType).Elem()typeOfT:=s.Type()fori:=0;i谢谢, 最佳答案 它作为StructField.Tag可用,所以f.Tag引用资料:reflect.StructFieldreflec

go - 在没有结构的情况下解析 GraphQL 中的列表字段

我有这个GraphQL类型:typeUser{id:Stringname:String}由定义varUserObject=graphql.NewObject(graphql.ObjectConfig{Name:"User",Fields:graphql.Fields{"id":&graphql.Field{Type:graphql.String,},"name":&graphql.Field{Type:graphql.String,},},})在我的根查询中,我想用查询字段users链接一些用户:varRootQuery=graphql.NewObject(graphql.Object

json - Go:JSON 编码嵌套结构;错误地省略了外部字段

我正在尝试编码嵌套结构。查看一个非功能示例here(我无法在Goplayground中导入“compute”和“pretty”,但我已经重新创建了我的测试逻辑并粘贴了输出)。packagemainimport("encoding/json""fmt""github.com/kylelemons/godebug/pretty"compute"google.golang.org/api/compute/v1")typeCreateInstancestruct{compute.Instance//Additionalmetadatatosetfortheinstance.Metadatama

golang 使用结构本身为 sync.Mutex 和 sync.Cond 初始化成员

这是代码:typesomeThingstruct{sync.Mutexcv*sync.Condnumint}funcNewSomething()*someThing{//howdoyoudothis?return&someThing{cv:sync.NewCond(sync.Mutex)}}此代码编译失败:sync.Mutex(type)isnotanexpression所以基本上问题是如何在初始化时引用结构本身(因为它有一个嵌入式成员sync.Mutex)?(例如,c++有this)。 最佳答案 可以先新建一个实例,然后再引用嵌入

json - 这个简洁的 JSON 文档的 Go 结构是什么?

文档有意使用最少的键/值对元数据。在人员列表中,我们可以有类似"name":"joe"的东西,或者我们可以有joe的键。它的错误在于拥有更少的键。也许这个文档对于Go结构来说太动态了?我也尝试过YAML,问题在于结构。结构保持为空,因为它没有正确映射。Playground链接:https://play.golang.org/p/PGSjoKvNja或者我是否需要推出自己的UnmarshalJSON并为“Action”设置条件(或开关)?如果是这样就好了。我可以在那里进行强制转换和验证,遍历文档并检测有问题的genericaction位是什么,然后创建正确类型的结构。

dictionary - append 的第一个参数必须是 slice;有结构 - golang 映射

在这种情况下似乎无法使用append。任何帮助将不胜感激。append的第一个参数必须是slice:packagemainimport("fmt")typeCstruct{value5stringvalue6string}typeBstruct{value3stringvalue4C}typeAstruct{value1stringvalue2B}typeXstruct{keyint}funcmain(){letSee:=map[X]A{}letSee[X{1}]=A{"T",B{"T1",C{"T11","T12"}}}letSee[X{1}]=append(letSee[X{1}]

go - 如何创建一个嵌入另一个结构的片段?

我有以下内容:https://play.golang.org/p/q2NUMzbw6-packagemainimport"fmt"typeAstruct{NamestringAddressstring}typeBstruct{A}typeCstruct{A}typeDstruct{A}//....morestructsthatembedAtypemyinterfaceinterface{SetName(string)SetAddress(string)}funcrun()*A{//iterateoverasliceofstructsthatembedA....how????for_,s