go-ini
Depo: go-ini/ini: Package ini provides INI file read and write functionality in Go (github.com)
Dokümantasyon: go-ini/ini: Awesome Go INI file parsing (unknwon.cn)
Giriş
Go ile yazılmış bir ini dosyası ayrıştırma kütüphanesidir. Serileştirme ve serileştirme açma struct eşleme ve yorum işlemlerini destekler.
Kurulum
go get gopkg.in/ini.v1Hızlı Başlangıç
ini dosyası:
ini
# olası değerler: production, development
app_mode = development
[paths]
# grafana'nın geçici dosyaları oturumları ve sqlite3 veritabanını (eğer kullanılıyorsa) depolayabileceği yol
data = /home/git/grafana
[server]
# Protokol (http veya https)
protocol = http
# Kullanılacak http portu
http_port = 9999
# Ana bilgisayar adı alan adıyla eşleşmezse doğru alan adına yönlendir
# DNS yeniden bağlama saldırılarını önler
enforce_domain = truego dosyası:
go
package main
import (
"fmt"
"os"
"gopkg.in/ini.v1"
)
func main() {
cfg, err := ini.Load("my.ini")
if err != nil {
fmt.Printf("Dosya okuma hatası: %v", err)
os.Exit(1)
}
// Tipik okuma işlemi. Varsayılan bölüm boş string ile temsil edilebilir
fmt.Println("Uygulama Modu:", cfg.Section("").Key("app_mode").String())
fmt.Println("Veri Yolu:", cfg.Section("paths").Key("data").String())
// Aday değer kısıtlamaları ile bazı işlemler yapabiliriz
fmt.Println("Sunucu Protokolü:",
cfg.Section("server").Key("protocol").In("http", []string{"http", "https"}))
// Okunan değer aday listesinde yoksa sağlanan varsayılan değere düşer
fmt.Println("E-posta Protokolü:",
cfg.Section("server").Key("protocol").In("smtp", []string{"imap", "smtp"}))
// Otomatik tür dönüşümünü dene
fmt.Printf("Port Numarası: (%[1]T) %[1]d\n", cfg.Section("server").Key("http_port").MustInt(9999))
fmt.Printf("Alan Adı Zorla: (%[1]T) %[1]v\n", cfg.Section("server").Key("enforce_domain").MustBool(false))
// Bu kadar. Bir değeri değiştir ve kaydet
cfg.Section("").Key("app_mode").SetValue("production")
cfg.SaveTo("my.ini.local")
}Çıktı:
$ go run main.go
Uygulama Modu: development
Veri Yolu: /home/git/grafana
Sunucu Protokolü: http
E-posta Protokolü: smtp
Port Numarası: (int) 9999
Alan Adı Zorla: (bool) true
$ cat my.ini.local
# olası değerler: production, development
app_mode = production
[paths]
# grafana'nın geçici dosyaları oturumları ve sqlite3 veritabanını (eğer kullanılıyorsa) depolayabileceği yol
data = /home/git/grafana
...