golang调用toml文件

Posted by didphp.com

介绍

TOML可以当成.ini的替代品,旨在成为一个语义明显且易于阅读的最小化配置文件格式,被设计成可以无歧义地映射为哈希表,能很容易地被解析成各种语言中的数据结构。

查看官方文档

安装

toml的解析包有多个,这里安装使用BurntSushitoml

go get github.com/BurntSushi/toml@latest

文档

更多用法参考官方文档
https://godocs.io/github.com/BurntSushi/toml

示例

golangtoml包调用比较简单,读取文件,解析即可

toml示例文件

保存为test.toml

host="127.0.0.1"

读取文件

file, err := os.Open("test.toml")
if err != nil {
    panic(err)
}
defer file.Close()
content, fileErr := ioutil.ReadAll(file)
if fileErr != nil {
    panic(fileErr)
}
fmt.Println(string(content))

解析

var config struct {
    Host string
}
toml.Decode(string(content), &config)
fmt.Println(config)
fmt.Println(config.Host)

完整示例

package main

import (
    "fmt"
    "github.com/BurntSushi/toml"
    "io/ioutil"
    "os"
)

func main() {
    file, err := os.Open("test1.toml")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    content, fileErr := ioutil.ReadAll(file)
    if fileErr != nil {
        panic(fileErr)
    }
    var config struct {
        Host string
    }
    toml.Decode(string(content), &config)
    fmt.Println(config)
    fmt.Println(config.Host)
}