gpt4 book ai didi

go - 从golang中的属性文件解析值

转载 作者:IT王子 更新时间:2023-10-29 01:19:43 24 4
gpt4 key购买 nike

对于 Java,有 Properties 类提供解析属性文件/与属性文件交互的功能。

golang 标准库中有类似的东西吗?

如果没有,我还有什么其他选择?

最佳答案

在@Madhu 的回答之上添加,您可以创建一个非常简单的程序包来使用扫描仪读取属性文件,并逐行读取文件并跳过无效行(那些没有“=”字符的行):

例子:

package fileutil

import (
"bufio"
"os"
"strings"
"log"
)

type AppConfigProperties map[string]string

func ReadPropertiesFile(filename string) (AppConfigProperties, error) {
config := AppConfigProperties{}

if len(filename) == 0 {
return config, nil
}
file, err := os.Open(filename)
if err != nil {
log.Fatal(err)
return nil, err
}
defer file.Close()

scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if equal := strings.Index(line, "="); equal >= 0 {
if key := strings.TrimSpace(line[:equal]); len(key) > 0 {
value := ""
if len(line) > equal {
value = strings.TrimSpace(line[equal+1:])
}
config[key] = value
}
}
}

if err := scanner.Err(); err != nil {
log.Fatal(err)
return nil, err
}

return config, nil
}

示例测试 sample_test.properties :

host=localhost
proxyHost=test
protocol=https://
chunk=

属性测试:

package fileutil

import (
"testing"
)

func TestReadPropertiesFile(t *testing.T) {
props, err := ReadPropertiesFile("sample_test.properties")
if err != nil {
t.Error("Error while reading properties file")
}

if props["host"] != "localhost" || props["proxyHost"] != "test" || props["protocol"] != "https://" || props["chunk"] != "" {
t.Error("Error properties not loaded correctly")
}

}

关于go - 从golang中的属性文件解析值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40022861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com