php小编草莓在这里为大家介绍一种实用的技巧,那就是"Go,解组为大写键"。这个技巧可以帮助我们更快速、高效地进行编程工作。当我们在编写代码时,经常需要对一段代码进行注释或取消注释,而手动添加或删除注释符号会相对繁琐。但是,通过使用"Go,解组为大写键"的方式,我们可以快速地对代码进行注释或取消注释,大大提升了我们的工作效率。下面,让我们一起来了解具体的操作方法吧!
后续key总是小写? 第923章
我正在寻找将非结构化 yaml 解组为 golangcasing 键的最简单方法。详情--
看看
https://go.dev/play/p/nihdqorpek1
即,
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
中的小写键。一个后续评论说他们“正在从 gopkg.in/yaml.v3 切换到 sigs.k8s.io/yaml”,但正在阅读 sigs.k8s.io/yaml 的文档,我觉得他们还是需要了解yaml的结构,而且还需要提前定义好翻译机制。
是否有任何简单的方法可以将非结构化 yaml 解组为大写/golangcasing 键?最简单的方法是什么?如果没有 go 包提供此类开箱即用的功能,那么它们中是否有任何插件/回调可以让我自己轻松地进行翻译?
您可以声明实现 yaml.unmarshaler
接口的自定义密钥类型。
类似这样的事情:
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 }
然后将其用作地图的键。
m := make(map[MyKey]any)
//m.sbmmt.com/link/e18cfe46b96c30852b565e561152d055
以上是Go,解组为大写键的详细内容。更多信息请关注PHP中文网其他相关文章!