Я ищу лучший способ чтения файлов конфигурации в больших и средних проектах в Go.
- Какая библиотека подходит для чтения и записи файлов конфигурации?
- В каком формате сохранять файлы конфигурации (
config.json
или.env
илиconfig.yaml
или...)?
Я ищу лучший способ чтения файлов конфигурации в больших и средних проектах в Go.
config.json
или .env
или config.yaml
или...)?Существует множество способов обработки конфигурации в Golang. Если вы хотите работать с config.json, посмотрите этот ответ. Для обработки переменных среды вы можете использовать пакет 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")
Дополнительные сведения см. в этом источнике.
.env
для конфигурации — это неплохо, но я бы сказал, что они служат цели, отличной от общей конфигурации, и не должны быть прочитаны самими службами, а скорее кем-то < i>запускает эти службы. - person kostix   schedule 02.04.2021r/golang
или канал Gopher в Slack или форум Golangbridge — все должно работать без нарушения правил темы; SO просто не подходит для таких открытых/исследовательско-образовательных вопросов. - person kostix   schedule 02.04.2021