Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membaca Potongan Peta daripada Fail Konfigurasi Menggunakan Golang Viper?

Bagaimana untuk Membaca Potongan Peta daripada Fail Konfigurasi Menggunakan Golang Viper?

DDD
Lepaskan: 2024-11-26 04:46:22
asal
690 orang telah melayarinya

How to Read Slices of Maps from Configuration Files Using Golang Viper?

Membaca Potongan Peta dengan Golang Viper

Pustaka Viper ialah alat yang sangat baik untuk membaca dan mengurus data konfigurasi dalam Go. Satu cabaran biasa yang dihadapi pengguna ialah membaca sekeping peta daripada fail konfigurasi.

Pertimbangkan fail konfigurasi HCL berikut:

interval = 10
statsd_prefix = "pinger"

group "dns" {
  target_prefix = "ping"
  target "dns" {
    hosts = [
      "dnsserver1",
      "dnsserver2"
    ]
  }
}
Salin selepas log masuk

Untuk membaca fail konfigurasi ini dengan Viper, anda boleh menggunakan kod berikut:

type config struct {
    Interval      int     `mapstructure:"interval"`
    StatsdPrefix  string  `mapstructure:"statsd_prefix"`
    Groups       []group `mapstructure:"group"`
}

type group struct {
    Name         string  `mapstructure:"group"`
    TargetPrefix string  `mapstructure:"target_prefix"`
    Targets      []target `mapstructure:"target"`
}

type target struct {
    Name   string   `mapstructure:"target"`
    Hosts  []string `mapstructure:"hosts"`
}

func main() {
    viper.SetConfigName("config")
    viper.AddConfigPath(".")

    err := viper.ReadInConfig()
    if err != nil {
        panic(err)
    }

    var c config
    err = viper.Unmarshal(&c)
    if err != nil {
        panic(err)
    }

    fmt.Println(c.Interval)
    fmt.Println(c.StatsdPrefix)

    fmt.Println("Groups:")
    for _, group := range c.Groups {
        fmt.Println("- Name:", group.Name)
        fmt.Println("  - Prefix:", group.TargetPrefix)

        fmt.Println("  - Targets:")
        for _, target := range group.Targets {
            fmt.Println("    - Name:", target.Name)
            fmt.Println("      - Hosts:")
            for _, host := range target.Hosts {
                fmt.Println("        - ", host)
            }
        }
    }
}
Salin selepas log masuk

Dengan mentakrifkan struktur Go agar sepadan dengan fail konfigurasi, Viper boleh menyahkod dan memetakan data konfigurasi secara automatik kepada jenis yang betul. Ini memudahkan kerja dengan struktur data yang kompleks dan menyediakan cara selamat jenis untuk mengakses nilai konfigurasi.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Potongan Peta daripada Fail Konfigurasi Menggunakan Golang Viper?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan