【问题标题】:How to set array value to a field in golang using reflect?如何使用反射将数组值设置为golang中的字段?
【发布时间】:2016-06-03 20:00:35
【问题描述】:

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

type Config struct {
        Address[]string
        Name string
}

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

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

我已经使用 Reflect 来识别类型并将其值设置为 Config。我可以使用设置 Name 字段的值 func (v Value) SetString(x string) 是反射中的一个内置方法。有没有办法将 []string 值直接设置为字段?请帮忙。

【问题讨论】:

  • 为什么不使用标准库中的默认 json 解码器?它已经为你做了一切。

标签: reflection go


【解决方案1】:

您可以为此使用 json 包(它在内部使用反射):

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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多