editor php Strawberry di sini untuk memperkenalkan anda kepada teknik praktikal, iaitu "Pergi, unmarshal ke kekunci huruf besar". Teknik ini boleh membantu kami membuat program dengan lebih cepat dan cekap. Apabila kami menulis kod, kami selalunya perlu mengulas atau menyahkomen sekeping kod, dan menambah atau mengalih keluar simbol ulasan secara manual boleh menjadi agak membosankan. Walau bagaimanapun, dengan menggunakan kaedah "Go, unmarshal to uppercase keys", kami boleh mengulas atau menyahkomen kod dengan cepat, yang meningkatkan kecekapan kerja kami dengan ketara. Di bawah, mari kita belajar kaedah operasi khusus bersama-sama!
Kunci seterusnya sentiasa huruf kecil? Bab 923
Saya sedang mencari cara paling mudah untuk membongkar yaml tidak berstruktur ke dalam kunci golangcasing. Butiran--
Sila tengok
https://go.dev/play/p/nihdqorpek1
iaitu,
package main import ( "fmt" "log" "gopkg.in/yaml.v3" ) var data = ` a: Easy! b: c: 2 d: [3, 4] ` // Note: struct fields must be public in order for unmarshal to // correctly populate the data. type T struct { A string B struct { RenamedC int `yaml:"c"` D []int `yaml:",flow"` } } func main() { m := make(map[interface{}]interface{}) err := yaml.Unmarshal([]byte(data), &m) if err != nil { log.Fatalf("error: %v", err) } fmt.Printf("--- m:\n%v\n\n", m) d, err := yaml.Marshal(&m) if err != nil { log.Fatalf("error: %v", err) } fmt.Printf("--- m dump:\n%s\n\n", string(d)) }
m
. Ulasan susulan mengatakan mereka "bertukar daripada gopkg.in/yaml.v3 kepada sigs.k8s.io/yaml" , tetapi membaca dokumentasi untuk sigs.k8s.io/yaml, saya rasa mereka masih perlu faham struktur yaml , dan mekanisme terjemahan perlu ditakrifkan terlebih dahulu.
Adakah terdapat cara mudah untuk membongkar kunci yaml tidak berstruktur kepada huruf besar/golangcasing? Apakah cara yang paling mudah? Jika tiada pakej go menyediakan fungsi sedemikian di luar kotak, adakah terdapat sebarang pemalam/panggil balik di dalamnya yang membolehkan saya melakukan terjemahan dengan mudah sendiri?
Anda boleh mengisytiharkan jenis kunci tersuai yang melaksanakan antara muka yaml.unmarshaler
.
Perkara seperti ini:
type mykey string func (k *mykey) unmarshalyaml(n *yaml.node) error { var s string if err := n.decode(&s); err != nil { return err } *k = mykey(strings.toupper(s)) return nil }
Kemudian gunakannya sebagai kunci peta.
m := make(map[MyKey]any)
https://www.php.cn/link/e18cfe46b96c30852b565e561152d055
Atas ialah kandungan terperinci Pergi, nyahmarshal ke kunci huruf besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!