真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言如何讀取配置文件,go 配置

Go 各種方式加載配置文件

go run 或者 go build后在配置目錄的相對(duì)路徑上執(zhí)行

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)上饒,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

假設(shè)當(dāng)前目錄如下:

├─config

│ │ main.go

│ │

│ └─file // 配置文件目錄

│ config.ini

也就是說(shuō)無(wú)論你是go run或者build后的執(zhí)行程序,都應(yīng)該在你執(zhí)行目錄下

有該配置文件路徑如file/config.ini

否則就會(huì)發(fā)生以下錯(cuò)誤, 無(wú)法讀取配置文件

panic: Error:can not read file "./file/config.ini"

使用絕對(duì)路徑讀取配置文件

如果配置文件動(dòng)態(tài)的話, 具體怎么傳入 配置文件路徑

go-bindata 把配置文件打包進(jìn)去

5.1 使用遠(yuǎn)程配置中心去讀取配置

go 怎么寫(xiě)入conf配置文件

為了快速聲明配置文件中的全局變量而寫(xiě)的封裝包,大家笑納,廢話少說(shuō),直接上方法。

1.首先,下載包:

1

2

go get "github.com/luckykris/go-utilbox/Env"

go get "github.com/luckykris/go-utilbox/Conf/ReadConf"

2.書(shū)寫(xiě)配置文件(例):

vim test.cfg,寫(xiě)入如下配置內(nèi)容:

1

2

3

4

5

6

7

8

[gms]

port = 2016

[db]

db = mysql

user = root

password = redhat

port = 3306

host = 127.0.0.1

3.寫(xiě)一個(gè)test.go來(lái)獲取配置文件里的配置,并且將所有配置文件內(nèi)的信息聲明全局變量,注意,你需要在go代碼里提前定義各項(xiàng)配置的數(shù)據(jù)類型(string,int目前只支持兩類)以及默認(rèn)值。如下列g(shù)o代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

package main

import(

"github.com/luckykris/go-utilbox/Env"

"github.com/luckykris/go-utilbox/Conf/ReadConf"

"fmt"

)

func main(){

Init()

}

func Init(){

//定義gms配置區(qū)域

gms:=ReadConf.CONFIG{

AREA:"gms",//區(qū)域名

CONF:map[string]ReadConf.CONFIGROW{

"port":{TYPE:"int",EXIT:false,DEFAULT:1},//具體配置,

//此條為port配置默認(rèn)值為1

//類型為int

//注意:如果標(biāo)明類型是int默認(rèn)值

//不要加雙引號(hào)“”不然會(huì)被認(rèn)為 //是字符串.

//false的意思是,當(dāng)配置文件里讀 //取不到這個(gè)配置的時(shí)候程序退出

},

}

//定義db配置區(qū)域

db:=ReadConf.CONFIG{

AREA:"db",//區(qū)域名

CONF:map[string]ReadConf.CONFIGROW{

"port":{TYPE:"int",EXIT:false,DEFAULT:3306},

"db":{TYPE:"string",EXIT:false,DEFAULT:"mongo"},

"user":{TYPE:"string",EXIT:false,DEFAULT:"root"},

"password":{TYPE:"string",EXIT:false,DEFAULT:"root"},

"host":{TYPE:"string",EXIT:false,DEFAULT:"localhost"},

},

}

//讓程序讀取配合文件,并且把需要提取的配置區(qū)域變量傳入LodConf函數(shù)

//這個(gè)函數(shù)執(zhí)行之后,所有實(shí)現(xiàn)定義的配置就都生成全局變量了。

ReadConf.LoadConf("test.cfg",gms,db)

//以下是對(duì)配置文件的全局變量的調(diào)用方式,用Env.ENV["配置區(qū)域/配置條目"].(類型)

//因?yàn)榉祷氐闹凳莍nterface{}類型的,所以需要自己轉(zhuǎn)換下類型。

fmt.Printf("gms/port:%d\n",Env.ENV["gms/port"].(int))

fmt.Printf("db/port:%d\n",Env.ENV["db/port"].(int))

fmt.Printf("db/db:%s\n",Env.ENV["db/db"].(string))

fmt.Printf("db/user:%s\n",Env.ENV["db/user"].(string))

fmt.Printf("db/password:%s\n",Env.ENV["db/password"].(string))

fmt.Printf("db/host:%s\n",Env.ENV["db/host"].(string))

}

4.以下就是執(zhí)行此GO程序后的輸出結(jié)果啦:

1

2

3

4

5

6

7

[root@gbz.test.org GoMonitorServer]# go run test.go

gms/port:2016

db/port:3306

db/db:mysql

db/user:root

db/password:redhat

db/host:127.0.0.1

如何用Go語(yǔ)言打造一個(gè)高性能MySQLProxy

讀取配置文件并啟動(dòng),在配置文件中設(shè)置的監(jiān)聽(tīng)端口監(jiān)聽(tīng)客戶端請(qǐng)求。

收到客戶端連接請(qǐng)求后,啟動(dòng)一個(gè)goroutine單獨(dú)處理該請(qǐng)求。

首選進(jìn)行登錄驗(yàn)證,驗(yàn)證過(guò)程完全兼容MySQL認(rèn)證協(xié)議,由于用戶名和密碼在配置文件中已經(jīng)設(shè)置好,所以可以利用該信息驗(yàn)證連接請(qǐng)求是否合法。?

當(dāng)用戶名和密碼都正確時(shí),轉(zhuǎn)入下面的步驟,否則返回出錯(cuò)信息給客戶端。

認(rèn)證通過(guò)后,客戶端發(fā)送SQL語(yǔ)句。

kingshard對(duì)客戶端發(fā)送過(guò)來(lái)的SQL語(yǔ)句,進(jìn)行詞法和語(yǔ)義分析,識(shí)別出SQL的類型和生成SQL的路由計(jì)劃。如果有必要還會(huì)改寫(xiě)SQL,然后轉(zhuǎn)發(fā)到相應(yīng)的DB。也有可能不做詞法和語(yǔ)義分析直接轉(zhuǎn)發(fā)到相應(yīng)的后端DB。如果轉(zhuǎn)發(fā)SQL是分表且跨多個(gè)DB,則每個(gè)DB對(duì)應(yīng)啟動(dòng)一個(gè)goroutine發(fā)送SQL和接收該DB返回的結(jié)果。

接收并合并結(jié)果,然后轉(zhuǎn)發(fā)給客戶端。


當(dāng)前標(biāo)題:go語(yǔ)言如何讀取配置文件,go 配置
文章起源:http://weahome.cn/article/hochep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部