Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 如何从配置文件中获取路径_Sqlite_Go - Fatal编程技术网

Sqlite 如何从配置文件中获取路径

Sqlite 如何从配置文件中获取路径,sqlite,go,Sqlite,Go,我想从配置文件中获取sqlite数据库的路径。我怎么能在围棋中做到这一点 这是我以前写过的代码: database, _ := sql.Open("sqlite3", "C:\\Users\\username\\project\\source.db") 在这种情况下,我的路径是直接用代码“硬编码”的。我想设置一个变量,它从配置数据中获取路径。我的第一个建议是使用JSON文件而不是YAML文件进行配置,因为Go本身就支持它;您不需要使用任何外部软件包 type DBConfig struct {

我想从配置文件中获取sqlite数据库的路径。我怎么能在围棋中做到这一点

这是我以前写过的代码:

database, _ := sql.Open("sqlite3", "C:\\Users\\username\\project\\source.db")

在这种情况下,我的路径是直接用代码“硬编码”的。我想设置一个变量,它从配置数据中获取路径。

我的第一个建议是使用
JSON
文件而不是
YAML
文件进行配置,因为Go本身就支持它;您不需要使用任何外部软件包

type DBConfig struct {
    Path string `json:"path"`
}

func loadConfig(path string) (*DBConfig, error) {
    data, err := ioutil.ReadFile(path)
    if err != nil {
        return nil, err
    }

    var conf DBConfig
    err = json.Unmarshal(data, &conf)
    if err != nil {
        return nil, err
    }

    return &conf, nil   
}
我的第二个建议是,将此配置文件的路径作为
标志
传入。当您像这样运行应用程序时,可以提供一个标志:

$ go build . -o MyApp
$ ./MyApp --config=path/to/config/file
标志非常强大,允许您轻松配置应用程序,而无需更改太多代码。在Golang中使用标志很简单

var configPath = flag.String("config", "", "Path to file containing app config")
只需确保在
main
函数的顶部添加
flag.Parse
,即可访问它们


祝你好运

你的配置文件是什么格式的?可能是JSON还是XML、YAML?还是别的什么?@mkopriva我想和YAML一起做。我为它创建了一些模块(Viper和go yaml)。这两个软件包以不同的方式工作,因此了解您选择了哪一个非常重要,这样我们才能提供准确的解决方案。@mkopriva,好的,您能告诉我,我如何使用go yaml实现它吗?go对yaml也有很好的支持。没有理由使用JSON如果您喜欢YAML(我通常更喜欢YAML,或者更好的配置是TOML),当然,您应该选择最适合您的项目和最适合您的内容。但是为了简单起见,使用语言标准库中构建的内容通常比依赖第三方库更方便。