У меня есть две структуры, вот так:
// init a struct for a single item
type Cluster struct {
Name string
Path string
}
// init a grouping struct
type Clusters struct {
Cluster []Cluster
}
Что я хочу сделать, это добавить новые элементы в структуру кластеров. Поэтому я написал метод, например, так:
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 / directoryies.go: 41: 4: не определено: c
Итак, я попытался переместить это:
Cluster := []Cluster{}
c := Clusters{Cluster}
Над циклом - range
. Я получаю ошибку:
cmd / directoryies.go: 43: 20: Кластер не является типом
Что я здесь не так делаю?