Go --- toml配置文件使用

这篇具有很好参考价值的文章主要介绍了Go --- toml配置文件使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们常见的一些配置文件包括,yaml、xml、toml、json和ini。

今天我们就来介绍这个toml配置文件,在go语言中的使用。

注:我选择toml的原因是toml配置简单,注释方便,读取方便。

包介绍

toml(Tom’s Obvious, Minimal Language),简约又明显的语言。

使用的包是

github.com/BurntSushi/toml

安装该包

go get github.com/BurntSushi/toml@latest

使用列子

我们一般将配置文件中的字段映射到结构体中,这也方便了使用者的使用过程。

  1. 简单例子

    test.toml文件

    Name = "张三"
    Age = 18
    Money = 1.2
    Hobby = ["打游戏","去医院疗伤"]
    Birthday = 2023-01-05
    

    toml_test.go

    package test
    
    import (
       "fmt"
       "github.com/BurntSushi/toml"
       "os"
       "testing"
       "time"
    )
    
    type Config struct {
       Name     string
       Age      int
       Money    float64
       Hobby    []string
       Birthday time.Time
    }
    
    func TestToml1(t *testing.T) {
       f := "../conf/test.toml"
       if _, err := os.Stat(f); err != nil {
          panic(err)
       }
       var conf Config
    
       if _, err := toml.DecodeFile(f, &conf); err != nil {
          panic(err)
       }
    
       fmt.Printf("Name: %v\n", conf.Name)
       fmt.Printf("Age: %v\n", conf.Age)
       fmt.Printf("Money: %v\n\r", conf.Money)
       fmt.Printf("Hobby: %v\n\r", conf.Hobby)
       fmt.Printf("Birthday: %v\n\r", conf.Birthday)
    }
    

    输出

    Name: 张三
    Age: 18
    Money: 1.2
    Hobby: [打游戏 去医院疗伤]
    Birthday: 2023-01-05 00:00:00 +0800 CST

  2. 对象数组

    test.toml

    distros = [
        {name = "Arch Linux", packages = "pacman"},
        {name = "Void Linux", packages = "xbps"},
        {name = "Debian",     packages = "apt"},
    ]
    

    toml_test.go

    package test
    
    import (
       "fmt"
       "github.com/BurntSushi/toml"
       "os"
       "testing"
       "time"
    )
    
    type (
       example struct {
          Distros []distro
       }
       distro struct {
          Name string
          Pkg  string `toml:"Packages"`
       }
    )
    
    
    var f = "../conf/test.toml"
    
    // 对象数组
    func TestToml2(t *testing.T) {
       if _, err := os.Stat(f); err != nil {
          panic(err)
       }
       var conf example
    
       if _, err := toml.DecodeFile(f, &conf); err != nil {
          panic(err)
       }
       fmt.Println(conf)
    }
    
  3. map映射

    test.toml

    ## test1
    #Name = "张三"
    #Age = 18
    #Money = 1.2
    #Hobby = ["打游戏","去医院疗伤"]
    #Birthday = 2023-01-05
    
    #test2
    
    distros = [
        {name = "Arch Linux", packages = "pacman"},
        {name = "Void Linux", packages = "xbps"},
        {name = "Debian",     packages = "apt"},
    ]
    
    [[characters.star-trek]]
    name = "James Kirk"
    rank = "Captain"
    [[characters.star-trek]]
    name = "Spock"
    rank = "Science officer"
    

    toml_test.go

    package test
    
    import (
       "fmt"
       "github.com/BurntSushi/toml"
       "os"
       "testing"
       "time"
    )
    
    type (
       example struct {
          Distros    []distro
          Characters map[string][]struct {
             Name string
             Rank string
          }
       }
       distro struct {
          Name string
          Pkg  string `toml:"Packages"`
       }
    )
    
    var f = "../conf/test.toml"
    
    // map映射
    func TestToml3(t *testing.T) {
       if _, err := os.Stat(f); err != nil {
          panic(err)
       }
       var conf example
    
       if _, err := toml.DecodeFile(f, &conf); err != nil {
          panic(err)
       }
       fmt.Println(conf)
    }
    

结语

想要了解更多请点击:go-pkg toml

参考资料:BurntSushi/toml: TOML parser for Golang with reflection. (github.com)文章来源地址https://www.toymoban.com/news/detail-652114.html

到了这里,关于Go --- toml配置文件使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】VScode配置Go语言环境

    安装VScode请参考我的上一篇博客:VScode安装_㫪548的博客-CSDN博客 接下来我们直接进入正题: Go语言(又称Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言具有简洁、高效、可靠和易于阅读的特点,被设计用于解决大型项目的开发需求。它结合了静态类型

    2024年02月03日
    浏览(65)
  • 使用VSCODE配置GO语言开发环境

    1. 安装GO SDK 官方下载地址是:golan.google.cn/dl 2. 安装完毕后,会自动在配置文件中加入一些内容,其中比较重要的三个是: GOROOT(具体GO语言在硬盘上安装的位置,比如D:/GO) GOPATH(未来使用go install安装第三方工具包时,都会安装在GOPATH指定文件夹下的src或bin目录下,比如

    2024年02月06日
    浏览(45)
  • go 笔记 第七章 golang 的函数 func 方法

    声明函数 func 函数名(入参1 类型, 入参2 类型,… )(出参1 类型, 出参2 类型…){ 函数体,写逻辑 出参一定要全部 return, return 出参 } 函数内部不可以声明带名字的函数,可以声明匿名函数和自执行函数 函数名大写可以被其他包调用,小写私有,变量名也是一样 return 后面可以不

    2024年02月15日
    浏览(42)
  • Golang扫盲式学习——GO并发 | (一)

    并行:同一个时间段内多个任务同时在不同的CPU核心上执行。强调同一时刻多个任务之间的” 同时执行 “。 并发:同一个时间段内多个任务都在进展。强调多个任务间的” 交替执行 “。 随着硬件水平的提高,现在的终端主机都是多个CPU,每个CPU都是多核结构。当多个CPU同

    2024年02月07日
    浏览(45)
  • golang gRPC:根据.protobuf文件生成go代码

    安装 protoc 编译器。如果没有安装,可以参考官方文档进行安装。 使用 protoc 命令生成 gRPC 代码: 此命令将生成 .pb.go 和 _grpc.pb.go 文件,其中包含 protobuf 和 gRPC 的代码实现. –go_out选项会生成纯粹的Protocol Buffer消息代码,这包括Go语言的消息结构体和一些辅助方法。如果你只

    2024年02月14日
    浏览(43)
  • Go语言(Golang)安装下载配置及debug调试

    与Java类似,Go语言使用前也需要安装开发环境,并配置环境变量。下面以Windows平台为例,演示整体流程。 官方网站可能访问不到 https://golang.org/,可以访问国内镜像网站下载Go安装包: https://studygolang.com/dl https://mirrors.nju.edu.cn/ 因为Go语言一直的迭代,入门时尽量选择较新的版

    2024年02月04日
    浏览(61)
  • 【Golang】go编程语言适合哪些项目开发?

    前言 在当今数字化时代,软件开发已成为各行各业的核心需求之一。 而选择适合的编程语言对于项目的成功开发至关重要。 本文将重点探讨Go编程语言适合哪些项目开发,以帮助读者在选择合适的编程语言时做出明智的决策。 Go 编程语言适合哪些项目开发? Go是由Google开发

    2024年02月04日
    浏览(77)
  • 【Golang】解决Go test执行单个测试文件提示未定义问题

    目录 背景 根本原因 解决方法 解决 多级引用或多个引用包的情况 总结  资料获取方法 很多人记录过怎么执行Go test单个文件或者单个函数,但是要么对执行单文件用例存在函数或变量引用的场景避而不谈,要么提示调用了其它文件中的模块会报错。其实了解了go test命令的机

    2024年02月14日
    浏览(39)
  • 【Golang中的Go Module使用】

    Golang中的Go Module是一个用于包管理和版本控制的工具。在本文中,我们将深入探讨Go Module的相关知识,包括其定义、使用方法以及一些常见的应用场景。 Go Module是Golang中的包管理和版本控制工具,它的发展历程、用法、意义以及相关指令都对于Golang开发者来说非常重要。在本

    2024年02月16日
    浏览(47)
  • 【Golang】一篇文章带你快速了解Go语言&为什么你要学习Go语言

    目录 1. 为什么互联网世界需要Go语言 1.1 硬件限制:摩尔定律已然失效  1.2 Go语言为并发而生 1.3 Go性能强悍 1.4 Go语言简单易学 1.4.1 语法简洁 1.4.2 代码风格统一 1.4.3开发效率高  2.Go语言的诞生与发展 2.1什么是Go语言   2.2 Go语言的诞生 2.3 Go Gopher——Go语言的吉祥物 3. 为什么

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包