草庐IT

递归图

全部标签

linux - 在 go-inotify 中观察递归目录

我正在使用这个go库https://godoc.org/golang.org/x/exp/inotify对于Linuxinotify中的文件和文件夹观察器,当我们在Linux中直接使用它时,它会提供一个参数来传递以观察递归目录,即--r但在这个包装器中,我如何在调用函数时指定。packagemainimport("golang.org/x/exp/inotify""log")funcmain(){watcher,err:=inotify.NewWatcher()iferr!=nil{log.Fatal(err)}err=watcher.Watch("/home/minions")ife

go - 使用 golang 的四叉树递归并发

我正在尝试通过使用go-routines来共享递归查找来并行化我的四叉树查找。我的四叉树结构如下所示:typeQuadtreestruct{Rectangle//BoundaryofthequadtreePoints[]PointNe*QuadtreeSe*QuadtreeSw*QuadtreeNw*QuadtreeDividedboolCapacityintParent*Quadtree}我有一个名为QueryForNearestPoints的方法,它接受一个Point和一个searchRadius并返回searcharea在四叉树中。如果在给定的searchRadius内未找到任何

arrays - 使用 Golang 中的 sjson 递归地将数组更改为 JSON 中的非数组

我正在尝试做的事情:将JSON文件中所有长度为1的数组转换为非数组。例如输入:{"path":[{"secret/foo":[{"capabilities":["read"]}]}]}输出:{"path":{"secret/foo":{"capabilities":"read"}}}我不能使用Structs,因为JSON格式会有所不同...现在我已经设法至少检测到1个长度的slice:packagemainimport("encoding/json""fmt")funcfindSingletons(valueinterface{}){switchvalue.(type){case[]i

go - 递归期间缺少排列

我在goplayground中有一个示例递归代码,有2个“?”,目标是生成所有二进制字符串替换?使用0或1,它应该显示4个结果,但只显示3个。即缺少1100101packagemainimport("fmt"//"strings"//"strconv")funcmain(){str:="1?0?101"mstr:=[]byte(str)q:=[]byte("?")[0]a:=[]byte("0")[0]b:=[]byte("1")[0]fmt.Println(mstr)allstr(mstr,0,len(mstr),q,a,b)}funcallstr(mstr[]byte,indexi

go - 在 Go 中递归返回文件列表,包括根目录

想知道是否有一种快速的方法来获取包含根目录本身的根目录中的文件列表。sourceDir,err:=os.Open(startPath)iferr!=nil{returnerr}defersourceDir.Close()files,err:=sourceDir.Readdir(0)这只是“startPath”中的所有文件/子目录,而不是“startPath”本身。我必须手动将startPath的fileInfo手动附加到文件中。有没有更快的方法? 最佳答案 这就是filepath.Walk是为了。这将递归地打印出每个文件名:file

go - 如何通过 map[string]interface{} 递归迭代

我遇到了如何使用附加条件递归迭代map[string]interface{}的问题。1)如果一个值是一个映射-递归调用该方法2)如果一个值是一个数组——调用数组的方法3)如果值不是映射-处理它。现在当方法尝试执行doc.throughMap(mv)-发生错误那么,在reflect确认值是映射还是数组后,如何将某些值转换为所需的类型?typeMapTypemap[string]interface{}typeArrayType[]interface{}func(doc*Document)throughMap(docMapMapType)MapType{fork,v:=rangedocMap

Go - 具有数组和丢失值的递归结构

我创建了一个具有父子结构的Element结构,创建了一个名为SubElement的辅助函数,以及一个遍历所有子对象以进行打印的String方法:packagemainimport"fmt"typeElementstruct{parent*Elementchildren[]Elementtagstring}funcSubElement(parent*Element,tagstring)Element{el:=Element{}el.parent=parentel.tag=tagparent.children=append(parent.children,el)returnel}func(

file - 递归地在目录中查找文件

我想在目录(包括子目录)中递归地查找与特定模式匹配的所有文件。我写了代码来做到这一点:libRegEx,e:=regexp.Compile("^.+\\.(dylib)$")ife!=nil{log.Fatal(e)}files,err:=ioutil.ReadDir("/usr/lib")iferr!=nil{log.Fatal(err)}for_,f:=rangefiles{iflibRegEx.MatchString(f.Name()){println(f.Name())}}不幸的是,它只在/usr/bin中搜索,但我还想在其子目录中搜索匹配项。我怎样才能做到这一点?谢谢。

multithreading - 在golang中并行递归扫描树

我有一个访问节点相对较快的二叉树,但叶子除外-它们可能慢100-1000倍。我有一个递归算法,我想在go中实现(我是新手)。因为我必须到达叶子节点才能从并行性中获益,所以我需要在树的更高层并行化执行。这虽然可能会导致数百万个goroutines。用信号量限制它似乎不是“开始”的方式——没有这样的同步原语。我担心的另一个问题是,事实上,一个channel有多贵,我是否应该改用WaitGroup。我的树是抽象的,算法在其上运行,按级别和索引识别项目。//l30///\//l201///\/\//l10123///\/\/\/\//l001234567例如,我可以使用这样的函数来计算向量中所

json - 递归数据模型的golang json序列化/反序列化

假设我有:typeIObjectinterface{}typeItemstruct{DescriptionstringData[]byte}typeFunctionX1struct{ObjectIInclusionObject}typeFunctionX2struct{Object1IInclusionObjectObject2IInclusionObject}我希望能够序列化/反序列化一个模型,其中Item,FunctionX1FunctionX2它们都实现了IObject并且它们可以任意深度地指向彼此。请注意,我不希望:FunctionX1{Item{"foo",[]byte("b