我有两个结构体,如下所示:
// init a struct for a single item
type Cluster struct {
Name string
Path string
}
// init a grouping struct
type Clusters struct {
Cluster []Cluster
}
我想要做的是向clusters结构体追加新的项目。因此,我编写了一个方法,如下所示:
func (c *Clusters) AddItem(item Cluster) []Cluster {
c.Cluster = append(c.Cluster, item)
return c.Cluster
}
我的应用程序的工作方式是,我循环遍历一些目录,然后将最终目录的名称和路径添加到其中。我有一个被称为的函数:
func getClusters(searchDir string) Clusters {
fileList := make([]string, 0)
//clusterName := make([]string, 0)
//pathName := make([]string, 0)
e := filepath.Walk(searchDir, func(path string, f os.FileInfo, err error) error {
fileList = append(fileList, path)
return err
})
if e != nil {
log.Fatal("Error building cluster list: ", e)
}
for _, file := range fileList {
splitFile := strings.Split(file, "/")
// get the filename
fileName := splitFile[len(splitFile)-1]
if fileName == "cluster.jsonnet" {
entry := Cluster{Name: splitFile[len(splitFile)-2], Path: strings.Join(splitFile[:len(splitFile)-1], "/")}
c.AddItem(entry)
}
}
Cluster := []Cluster{}
c := Clusters{Cluster}
return c
}
这里的问题在于我不知道正确的做法。
目前,我得到的是:
所以我尝试移动这个:cmd/directories.go:41:4: undefined: c
Cluster := []Cluster{}
c := Clusters{Cluster}
在for循环之上 -
range
。我得到的错误是:
我在这里做错了什么?cmd/directories.go:43:20: Cluster不是一种类型