如何编写一个 Go 函数来接受不同的结构?

我正在编写一个解析配置 JSON 文件并使用 json.Unmarshal 将其数据存储在结构中的函数。我做了一些研究,它让我明白了我有一个 Config 结构和一个 Server_Config 结构作为配置中的一个字段,允许我添加更多字段,因为我想要不同的类似配置的结构。


如何编写一个 parseJSON 函数来处理不同类型的结构?


代码:


服务器端


type Server_Config struct {

    html_templates string

}


type Config struct {

    Server_Config

}


func main() {

    config := Config{}

    ParseJSON("server_config.json", &config)

    fmt.Printf("%T\n", config.html_templates)

    fmt.Printf(config.html_templates)

}

配置文件


package main

import(

    "encoding/json"

    "io/ioutil"

    "log"

)


func ParseJSON(file string, config Config) {

    configFile, err := ioutil.ReadFile(file)

    if err != nil {

        log.Fatal(err)

    }

    err = json.Unmarshal(configFile, &config)

    if err != nil {

        log.Fatal(err)

    }

}

或者,如果有更好的方法来完成所有这些,也请告诉我。对 Go 来说还很陌生,而且我的脑海中已经刻有 Java 约定。


HUX布斯
浏览 165回答 1
1回答

绝地无双

使用interface{}:func ParseJSON(file string, val interface{}) {    configFile, err := ioutil.ReadFile(file)    if err != nil {        log.Fatal(err)    }    err = json.Unmarshal(configFile, val)    if err != nil {        log.Fatal(err)    }}调用函数是一样的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go