赞
踩
[server]
ip=10.238.2.2
port = 8080
[mysql]
username=root
passwd = root
database = test
host=192.168.1.1
port=3066
package iniconfig import ( "os" "testing" ) // tag 对应 config.ini 名字 // 存储 ini 的 [server]、[mysql] type Config struct { ServerConf ServerConfig `ini:"server"` MysqlConf MysqlConfig `ini:"mysql"` } // 配置项对应的值 type ServerConfig struct { IP string `ini:"ip"` Port int `ini:"port"` } // 配置项对应的值 type MysqlConfig struct { Username string `ini:"username"` Passwd string `ini:"passwd"` Database string `ini:"database"` Host string `ini:"host"` Port int `ini:"port"` } func TestIniConfig(t *testing.T) { // 读取 ini文件 data, err := os.ReadFile("./config.ini") if err != nil { t.Error("read file failed") } // 定义结构体 var conf Config err = UnMarshal(data, &conf) if err != nil { t.Errorf("unmarshal failed,err:%v", err) } // 打印调试日志 t.Logf("unmarshal success,conf====:%#v", conf) }
PS D:\TEXT\gotest\iniconfig> go test -v === RUN TestIniConfig ini_config_test.go:47: unmarshal success,conf====: iniconfig包名,Config配置文件结构体名称。 iniconfig.Config{ ServerConf结构体字段,iniconfig包名ServerConfig结构体 ServerConf:iniconfig.ServerConfig{IP:"", Port:0}, MysqlConf:iniconfig.MysqlConfig{Username:"", Passwd:"", Database:"", Host:"", Port:0} } --- PASS: TestIniConfig (0.00s) PASS ok gotest/iniconfig 0.184s PS D:\TEXT\gotest\iniconfig>
package iniconfig import ( "errors" "reflect" ) func UnMarshal(data []byte, result interface{}) (err error) { // 字符切片,通过换行符分割 //lineArr := strings.Split(string(data), "\n") // 遍历打印 ini 文件的的数据,通过换行符进行拆分。 //for _, v := range lineArr { // fmt.Printf("%s\n", v) //} // 获取用户传递数据类型 typeInfo := reflect.TypeOf(result) // typeInfo.Kind() 类型名称 // reflect.Ptr 指向某个类型的指针类型 // 判断 result 是否为指针类型,如果不是指针类型则返回错误。 if typeInfo.Kind() != reflect.Ptr { err = errors.New("please pass address") return } return }
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。