【Go言語】viperはファイルの拡張子を指定すると読み込めない

viperを使っていたときに遭遇した事象です。

以下のように

func LoadConfig(filename string) (*viper.Viper, error) {
    v := viper.New()
 
    // filename = "config.yaml"
    v.SetConfigName(filename)
 
    v.AddConfigPath(".")
    v.AutomaticEnv()

    if err := v.ReadInConfig(); err != nil {
        if _, ok := err.(viper.ConfigFileNotFoundError); ok {
            return nil, errors.New("config file not found")
        }
        return nil, err
    }
    return v, nil
}

// config file not found

config.yamlというファイル名を渡してロードしようとしたときずっとNot Foundエラーになり、困っていました

拡張子をつけるのはだめ

拡張子をつけていたことが問題でした。拡張子がついていると読み込めないみたいです。

そのため、拡張子を外してconfig という名前で読み込んであげるとすんなり読み込めました。