Skip to content

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.v1

Hı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 = true

go 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
...

Golang by www.golangdev.cn edit