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語言,使用channel和timer定時執行以及優雅遇到的坑
問題描述: 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();//獲得