1. 程式人生 > >Go語言如何使用toml進行配置和解析

Go語言如何使用toml進行配置和解析

之前介紹過如何簡單的讀取key=value的配置解析方法:讀取配置內容方法
今天來介紹一個專案中常用的toml解析方法
1.配置檔名 xxxx.toml
2.解析方式 toml.Decoder()

main.go

package  main

import (
    "fmt"
    "github.com/BurntSushi/toml"
)

//訂製配置檔案解析載體
type Config struct{
    Database *Database
    SQL *SQL
}

//訂製Database塊
type Database struct {
    Driver    string
Username string `toml:"us"` //表示該屬性對應toml裡的us Password string } //訂製SQL語句結構 type SQL struct{ Sql1 string `toml:"sql_1"` Sql2 string `toml:"sql_2"` Sql3 string `toml:"sql_3"` Sql4 string `toml:"sql_4"` } var config *Config=new (Config) func init(){ //讀取配置檔案 _, err := toml.DecodeFile("test.toml"
,config) if err!=nil{ fmt.Println(err) } } func main() { fmt.Println(config) fmt.Println(config.Database) fmt.Println(config.SQL.Sql1) }

test.toml

#This file as Config struct

#this block as Database struct
[Database]
driver="jdbc:mysql.jdbc.Driver"
us="ft"
password="123"

#this block as SQL struct
[SQL]
sql_1= "select
* from user" sql_2="updata user set name = 'exo'" sql_3="delete * from user" sql_4="Insert into user(id,name) values(5,'ft')"

相關推薦

Go語言如何使用toml進行配置解析

之前介紹過如何簡單的讀取key=value的配置解析方法:讀取配置內容方法 今天來介紹一個專案中常用的toml解析方法 1.配置檔名 xxxx.toml 2.解析方式 toml.Decoder()

GO語言下載、安裝配置

1、GO語言下載 有時候可能打不開,多重新整理幾次即可。 下載適合自己系統的GO語言版本,我下載的是window版本的安裝程式,而非原始碼。當然你也可以下載原始碼。 找到你下載目錄下的 雙擊“go1.7.5.windows-amd64.msi”執

關於go語言的環境配置 SDK+path+工作目錄

電腦 程序 關於 找到 表示 選擇 壓縮包 span 操作 第一步: 安裝Golang的SDK http://golang.org,下載最新的安裝包,之後雙擊安裝即可。 安裝完成之後,打開終端,輸入go、或者go version(查看安裝版本)出現如下信息即表示安裝成功:

5、xamarin.android 中如何對AndroidManifest.xml 進行配置調整

receive custom 5.1 包裝 view 調整 加權 啟動 callable 我們在翻看一些java的源碼經常會說我們要在AndroidManifest.xml 中添加一些東西。而我們使用xamarin裏面實際上是通過C#的特性Attribute進行標記實現的

Go語言-make陷阱閉包函數

相關 運行 closure Go 需要 ber enc seq sum Go語言make陷阱 a := make([]int, 3) a = append(a, 1, 2, 3) 切片大小變成6 匿名函數 匿名函數是指不需要定義函數名的一種函數實現方式,可以直接賦值給一

go語言學習 - 引用路徑

ack int main light 語言 避免 沖突 turn 很多 // demo/x/a/A.go package math // 在 x/a 目錄下沒有采用默認的與目錄同名的包名也是可以的,這樣正好測試出引用用的是目錄路徑,調用卻用的是代碼文件中聲明的包名

Go語言的方法值方法表達式

pac ESS 地址 pointer 方法 package fun 變量 import // code_20_struct_method_expression project main.go package main import ( "fmt" ) //方法表

go語言中找&*區別

*和&的區別 : & 是取地址符號 , 即取得某個變數的地址 , 如 ; &a *是指標運算子 , 可以表示一個變數是指標型別 , 也可以表示一個指標變數所指向的儲存單元 , 也就是這個地址所儲存的值 . 從程式碼中驗證 : 先構建一個Rect型別 :

go語言學習--指標陣列陣列指標

陣列指標(也稱行指標)定義 int (*p)[n];()優先順序高,首先說明p是一個指標,指向一個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型資料的長度。 如要將二維陣列賦給一指標,應這樣賦值:int a[3][4];int (*p)[4]; //

Go語言 陣列初始化基本操作

package main import "fmt" func main() { // 陣列同一型別的集合 var arr [50]int // 1 賦值 // 運算元組,下標從0開始,索引從0到len()-1 for i := 0; i < len(arr); i++ { a

linux 下 ifcfg-ethx配置解析

網路介面配置檔案[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)TYPE=Et

Vim go語言開發環境配置

安裝vim 和 vim-go  sudo apt-get install vim git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go 安裝Vundle sudo apt-get install g

GO語言學習:切片陣列

1.陣列、切片   陣列的長度是固定的,切片的長度是可變長的     陣列的長度在宣告時就必須給定,並且之後不會再變化,陣列的長度是其型別的一部分,比如[1]string和[2]string 不是相同的陣列型別.     切片可以看作是對陣列的封裝,每一個切片的底層的資料結構一定

2 Go語言開發環境配置

linux下安裝 本人安裝過程 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https

Go語言入門 環境搭建入門

Go語言環境搭建 官網下載golang 下載地址:download golang 進入官網下載地址後,根據自己的系統選擇相應的安裝包。 我的系統是Ubuntu 16.04,因此選擇Linux版本的golang。下載完後進入下載目錄將安裝包解壓至/usr/lo

關於go語言,使用channeltimer定時執行以及優雅遇到的坑

 問題描述: 1、我在主程序中,通過go啟動了兩個協程來處理labor的執行。主程序定位為g0,兩個協程分別定義為g1和g2 2、同時在主程序中,通過執行 runConfigChangedMonitor 來定時監控配置檔案是否發生變化,如果發生變化就退出 3、退出方法為

GO語言使用之配置篇(一)之虛擬機器安裝及配置(5)Mac OS X11系統安裝

完整文件下載:https://download.csdn.net/download/tdcqzd/10559739 對於Mac OS X11系統,VMWare是不支援的,所以我們首先需要破解軟體,在

Go 語言結構之棧指標

前言 本系列文章總共包括4篇,主要幫助大家理解Go語言中一些語法結構和其背後的設計原則,包括指標、棧、堆、指標逃逸分析和值傳遞/地址傳遞。這一篇是本系列的第一篇,主要介紹棧和指標 以下是本系列文章的索引 1) Go語言結構之棧與指標 2) Go語言結構之

go語言的協程通道通訊

2013-09-17 周海漢 2013.9.17 許式偉的《go語言程式設計》,有一個簡單的例子,描述go協程和通訊通道chan。挺優美的。如下: [andy@s1 test]$ cat sum.go package main

Spring如何通過定義在META-INF/spring.handlers中的屬性進行配置檔案解析

毫無疑問這些東西肯定在Spring的入口函式refresh()之中進行的。AbstractApplicationContextConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();//獲得