php-Editor Strawberry ist hier, um Ihnen eine praktische Technik vorzustellen: „Los, Unmarshal auf Großbuchstaben umstellen“. Diese Technik kann uns helfen, schneller und effizienter zu programmieren. Wenn wir Code schreiben, müssen wir oft einen Codeabschnitt kommentieren oder auskommentieren, und das manuelle Hinzufügen oder Entfernen von Kommentarsymbolen kann relativ mühsam sein. Mit der Methode „Go, unmarshal to Großbuchstaben“ können wir den Code jedoch schnell kommentieren oder auskommentieren, was unsere Arbeitseffizienz erheblich verbessert. Lassen Sie uns als Nächstes gemeinsam die spezifischen Betriebsmethoden erlernen!
Der nachfolgende Schlüssel ist immer kleingeschrieben? Kapitel 923
Ich suche nach der einfachsten Möglichkeit, unstrukturiertes Yaml in Golangcasing-Schlüssel zu entpacken. Details--
Schauen Sie mal vorbei
https://go.dev/play/p/nihdqorpek1
das heißt,
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
entmarshallt. In einem Folgekommentar hieß es, sie würden „von gopkg.in/yaml.v3 zu sigs.k8s.io/yaml wechseln“ , aber wenn ich die Dokumentation für sigs.k8s.io/yaml lese, denke ich, dass sie es noch verstehen müssen Die Struktur von Yaml und der Übersetzungsmechanismus müssen im Voraus definiert werden.
Gibt es eine einfache Möglichkeit, unstrukturierte Yaml-Schlüssel in Großbuchstaben/Golangcases umzuwandeln? Was ist der einfachste Weg? Wenn kein Go-Paket diese Funktionalität sofort bereitstellt, gibt es darin Plugins/Rückrufe, mit denen ich die Übersetzung problemlos selbst durchführen kann?
Sie können einen benutzerdefinierten Schlüsseltyp deklarieren, der die yaml.unmarshaler
-Schnittstelle implementiert.
Dinge wie diese:
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 }
Dann verwenden Sie es als Schlüssel der Karte.
m := make(map[MyKey]any)
//m.sbmmt.com/link/e18cfe46b96c30852b565e561152d055
Das obige ist der detaillierte Inhalt vonLos, unmarshalieren auf Großbuchstaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!