我最近开始工作,golang因此很难理解如何实现我能够在Javaor中轻松完成的相同事情C#。我正在尝试创建一个configmanager类对象,当第一次configmanager调用类时,它应该初始化我的所有配置并将其存储在内存中的某个结构对象中。然后我应该可以访问configmanager对象,并且应该能够使用一些 getter 从我的主函数访问所有这些配置?
下面是我的configmanager围棋课。现在很简单,使其更容易理解。
package config
import (
"encoding/json"
"fmt"
"io/ioutil"
"github.com/david/internal/utilities"
)
type ClientMetrics struct {
ClientMetrics []ClientMetric `json:"clientMetrics"`
}
type CustomerData struct {
Process []string `json:"Process"`
Mat []string `json:"Mat"`
}
type ClientMetric struct {
ClientID int `json:"clientId"`
CustomerData CustomerData `json:"customerData,omitempty"`
LegCustomer []int `json:"legCustomer"`
OtherIds []int `json:"otherIds,omitempty"`
CatID int `json:"catId,omitempty"`
}
func Init(root string) (err error) {
files, err := utilities.FindFiles(root, "process-data.json")
if err != nil {
return fmt.Errorf("cannot find process-data.json file: %v", err)
}
for _, file := range files {
body, err := ioutil.ReadFile(file)
if err != nil {
return fmt.Errorf("unable to read file: %v", err)
}
var auto ClientMetrics
json.Unmarshal(body, &auto)
}
return nil
}
这是我在我的主要功能中使用它 - 这只是基本代码,只是为了演示我在做什么,但这不是production现成的代码。
package main
import (
"github.com/david/internal/config"
)
func main() {
root := "/home/Configurations"
config.Init(root)
//
}
在我上面的Init函数中,process-data.json如果文件在磁盘上,我会找到它,然后通过将其反序列化为ClientMetrics对象将其加载到内存中。如上所示,一切正常。
问题陈述
由于我来自背景Java,C#所以我的困惑是如何创建一个configmanager类对象,以及如何在我第一次调用时初始化我的所有配置,并且还可以使用一些 getterconfigmanager访问结构。ClientMetrics在 Java 和 C# 中,我曾经使用构造函数来初始化所有这些东西,然后使用一些 getter 来访问配置。我应该如何在 golang 中做同样的事情。
我的主要困惑是我们在 go 中是否有构造函数,我应该如何让 getter 在我的 main 函数中访问 struct 对象?我只是在寻找更好的设计,我应该如何在 golang 中完成我的上述代码?
大话西游666
GCT1015
慕虎7371278
相关分类