如何使用反射将数组值设置为golang中的字段?

时间:2016-02-22 11:49:54

标签: reflection go

我有一个包含以下字段的结构

type Config struct {
        Address[]string
        Name string
}

我正在从JSON格式的文件中读取此配置的值

{
   "Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
   "Name":"Name"
}

我使用Reflect来识别类型并将其值设置为Config.I我能够使用Name字段设置值 func(v Value)SetString(x string),这是一个内置的反射方法。有没有办法将[]字符串值直接设置为字段?请帮忙。

1 个答案:

答案 0 :(得分:4)

您可以使用json包(它在内部使用reflect):

package main

import (
    "encoding/json"
    "fmt"
)

type Config struct {
    Address []string
    Name    string
}

var someJson = []byte(`{
   "Address": ["xx.xx.xx.xx","xx.xx.xx.xx"],
   "Name":"Name"
}`)

func main() {
    var config Config
    err := json.Unmarshal(someJson, &config)
    if err != nil {
        fmt.Println("error: ", err)
    }
    fmt.Printf("%v", config)
}