资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

go语言如何读取配置文件 go语言读取excel

go 怎么写入conf配置文件

为了快速声明配置文件中的全局变量而写的封装包,大家笑纳,废话少说,直接上方法。

10年积累的网站设计制作、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有忠县免费网站建设让你可以放心的选择与我们合作。

1.首先,下载包:

1

2

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

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

2.书写配置文件(例):

vim test.cfg,写入如下配置内容:

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.写一个test.go来获取配置文件里的配置,并且将所有配置文件内的信息声明全局变量,注意,你需要在go代码里提前定义各项配置的数据类型(string,int目前只支持两类)以及默认值。如下列go代码:

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配置区域

gms:=ReadConf.CONFIG{

AREA:"gms",//区域名

CONF:map[string]ReadConf.CONFIGROW{

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

//此条为port配置默认值为1

//类型为int

//注意:如果标明类型是int默认值

//不要加双引号“”不然会被认为 //是字符串.

//false的意思是,当配置文件里读 //取不到这个配置的时候程序退出

},

}

//定义db配置区域

db:=ReadConf.CONFIG{

AREA:"db",//区域名

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"},

},

}

//让程序读取配合文件,并且把需要提取的配置区域变量传入LodConf函数

//这个函数执行之后,所有实现定义的配置就都生成全局变量了。

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

//以下是对配置文件的全局变量的调用方式,用Env.ENV["配置区域/配置条目"].(类型)

//因为返回的值是interface{}类型的,所以需要自己转换下类型。

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.以下就是执行此GO程序后的输出结果啦:

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语言文件操作

本文主要介绍了Go语言中文件读写的相关操作。

文件是什么?

计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。

os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err 。对得到的文件实例调用 close() 方法能够关闭文件。

为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。

Read方法定义如下:

它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF 。 举个例子:

使用for循环读取文件中的所有数据。

bufio是在file的基础上封装了一层API,支持更多的功能。

io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。

os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。

其中:

name :要打开的文件名 flag :打开文件的模式。 模式有以下几种:

perm :文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。

Go 各种方式加载配置文件

go run 或者 go build后在配置目录的相对路径上执行

假设当前目录如下:

├─config

│ │ main.go

│ │

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

│ config.ini

也就是说无论你是go run或者build后的执行程序,都应该在你执行目录下

有该配置文件路径如file/config.ini

否则就会发生以下错误, 无法读取配置文件

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

使用绝对路径读取配置文件

如果配置文件动态的话, 具体怎么传入 配置文件路径

go-bindata 把配置文件打包进去

5.1 使用远程配置中心去读取配置


分享文章:go语言如何读取配置文件 go语言读取excel
文章起源:http://cdkjz.cn/article/dogcjso.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220