-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.go
61 lines (53 loc) · 1.19 KB
/
config.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
func initConfig(path string) map[string]string {
//初始化
myMap := make(map[string]string)
//打开文件指定目录,返回一个文件f和错误信息
f, err := os.Open(path)
defer f.Close()
//异常处理 以及确保函数结尾关闭文件流
if err != nil {
panic(err)
}
//创建一个输出流向该文件的缓冲流*Reader
r := bufio.NewReader(f)
for {
//读取,返回[]byte 单行切片给b
b, _, err := r.ReadLine()
if err != nil {
if err == io.EOF {
break
}
panic(err)
}
//去除单行属性两端的空格
s := strings.TrimSpace(string(b))
//fmt.Println(s)
//判断等号=在该行的位置
index := strings.Index(s, "=")
if index < 0 {
continue
}
//取得等号左边的key值,判断是否为空
key := strings.TrimSpace(s[:index])
if len(key) == 0 {
continue
}
//取得等号右边的value值,判断是否为空
value := strings.TrimSpace(s[index+1:])
if len(value) == 0 {
continue
}
//这样就成功吧配置文件里的属性key=value对,成功载入到内存中c对象里
myMap[key] = value
fmt.Println("Get config: ", s)
}
return myMap
}