去嵌套结构

时间:2018-01-30 14:51:56

标签: go struct

如何创建类似这样的Go结构

{Name:Test { App1:Version1 App2:Version2}} 

使用Go App1/2Version1/2是动态的。

我试过了以下内容,

type Final struct {
        App string `json:"Name"`
        Applications [] Application
}
type final []Final
type Application struct {
         App string `json:`
}

final := Final {
        Name:"Test",
        Applications: []Application{
                {GetApps()},
        },
        }

其中GetApps将返回应用程序详细信息的列表,而我希望有一个键值对,其中键将是Appname,值将是其详细信息。我只需要一个语法,请帮助

2 个答案:

答案 0 :(得分:0)

如上所述,使用>>> with open('testing.txt') as fobj: ... res = tuple(ord(x) for line in fobj for x in line.strip()) >>> res map Final的{​​{1}}可能就是你想要的。

Applications

然后您可以按照尝试分配它:

type Final struct {
    Name         string `json:"Name"`
    Applications map[string]string
}

确保final := Final{ Name: "Test", Applications: GetApps(), } 返回GetApps(),并在json编组时获得动态密钥。

请参阅an example here

答案 1 :(得分:0)

我不明白为什么你需要任何动态的东西。这个重构似乎涵盖了你的情况:

  type Application {
          Name string
          Detail string
  }

  type Final struct {
          Name string
          Applications []Application
  }

  func GetApps() []Application {
          // ... Get a slice of Applications
          return []Application{}
  }

  func main() {
          final := Final{
                  Name: "Test",
                   Applications: []Application{}
          }

          for _, app := range GetApps() {
                   final.Applications = append(final.Applications, app)
          }

          // final is ready
  }

类型Application也可以像其他提到的map[string]string或者它不重要的结构,因为类型在编译时是已知的,并且这里不需要动态类型。