El uso tradicional de Viper es local. Después de cargar en una variable global bajo un paquete, se pueden seguir utilizando otros paquetes.
var Conf * viper.Viper func init () { // Nombre de archivo sin extensión '.json' filenameWithoutExt: = " env.debug " Conf.SetConfigName (filenameWithoutExt) Conf.SetConfigType ( " json " ) Conf.AddConfigPath ( " ./setting " ) // Dir. Proyecto si err: = Conf.ReadInConfig (); err! = nil { panic ( " Utilizando el archivo de configuración: " + Conf.ConfigFileUsed ()) } }
Para empaquetar archivos en binario, la herramienta recomendada es go-bindata / go-bindata
Use el comando `go-bindata -o bindata.go setting /` para generar un archivo go en el directorio actual, que tiene una función Assert (), que se puede usar en main.go.
Luego lea los bytes [] devueltos por Assert () en main.go a través de Viper io. El código es el siguiente:
filename: = " setting / env.debug.json " bytesContent, err: = Asset (filename) if err! = nil { pánico ( " Asset () no puede encontrar el archivo de configuración " ) } Conf.SetConfigType ( " json " ) Conf.ReadConfig (bytes.NewBuffer (bytesContent))
El valor de Config * viper.Viper se puede configurar en otros módulos para facilitar el uso externo.
A través de las operaciones anteriores, podemos ejecutar el archivo binario generado por la compilación en cualquier lugar.