无法解码 toml 文件

我想从 toml 文件中读取配置。


会议/会议.toml


db_host = "127.0.0.1"


db_port = 3306


db_user = "root"


db_password ="123456"

conf/conf.go 文件


package conf


import (

    "log"

    "github.com/BurntSushi/toml"

)


type appcfg struct {

    DbHost     string `toml:"db_host"`

    DbPort     string `toml:"db_port"`

    DbUser     string `toml:"db_user"`

    DbPassword string `toml:"db_password"`

}


var (

    App       *appcfg

    defConfig = "./conf/conf.toml"

)


func init() {


    var err error

    App, err = initCfg()

    log.Println(App.DbHost)


}


func initCfg() (*appcfg, error) {

    app := &appcfg{}

    _, err := toml.DecodeFile(defConfig, &app)

    if err != nil {

        return nil, err

    }

    return app, nil

}

当我运行这个程序时,我收到一个我不知道如何修复的错误:


恐慌:运行时错误:无效的内存地址或零指针取消引用


繁星点点滴滴
浏览 220回答 1
1回答

MYYA

(重新发布 Comin2021现在已删除的英文答案,因为它已被 OP 接受)您定义了DbPortas的类型,string但它在您的配置文件中显示为整数。更改如下:type appcfg struct {    DbHost     string `toml:"db_host"`    DbPort     int64  `toml:"db_port"`  // change this    DbUser     string `toml:"db_user"`    DbPassword string `toml:"db_password"`}还要检查initCfg第二个返回值err是否为空并记录它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go