处理服务配置的最佳方式是什么?
What is the best way to handle configuration of a service?
我正在寻找在 Go 中读取大中型项目配置文件的最佳方式。
- 哪个库适合读写配置文件?
- 我应该以什么格式保存配置文件(
config.json
或 .env
或 config.yaml
或...)?
在 Golang 中有多种方式来处理配置。如果你想用 config.json 处理,那么看看 this answer。要处理环境变量,您可以使用 os
包,例如:
// Set Environment Variable
os.Setenv("FOO", "foo")
// Get Environment Variable
foo := os.Getenv("FOO")
// Unset Environment Variable
os.Unsetenv("FOO")
// Checking Environment Variable
foo, ok := os.LookupEnv("FOO")
if !ok {
fmt.Println("FOO is not present")
} else {
fmt.Printf("FOO: %s\n", foo)
}
// Expand String Containing Environment Variable Using $var or ${var}
fooString := os.ExpandEnv("foo${foo}or$foo") // "foofooorfoo"
你也可以使用godotenv包:
# .env file
FOO=foo
// main.go
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
func main() {
// load .env file
err := godotenv.Load(".env")
if err != nil {
log.Fatalf("Error loading .env file")
}
// Get Evironment Variable
foo := os.Getenv("FOO")
查看 this source 了解更多信息。
我正在寻找在 Go 中读取大中型项目配置文件的最佳方式。
- 哪个库适合读写配置文件?
- 我应该以什么格式保存配置文件(
config.json
或.env
或config.yaml
或...)?
在 Golang 中有多种方式来处理配置。如果你想用 config.json 处理,那么看看 this answer。要处理环境变量,您可以使用 os
包,例如:
// Set Environment Variable
os.Setenv("FOO", "foo")
// Get Environment Variable
foo := os.Getenv("FOO")
// Unset Environment Variable
os.Unsetenv("FOO")
// Checking Environment Variable
foo, ok := os.LookupEnv("FOO")
if !ok {
fmt.Println("FOO is not present")
} else {
fmt.Printf("FOO: %s\n", foo)
}
// Expand String Containing Environment Variable Using $var or ${var}
fooString := os.ExpandEnv("foo${foo}or$foo") // "foofooorfoo"
你也可以使用godotenv包:
# .env file
FOO=foo
// main.go
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
func main() {
// load .env file
err := godotenv.Load(".env")
if err != nil {
log.Fatalf("Error loading .env file")
}
// Get Evironment Variable
foo := os.Getenv("FOO")
查看 this source 了解更多信息。