Maison  >  Article  >  développement back-end  >  Allez, désorganisez les touches majuscules

Allez, désorganisez les touches majuscules

WBOY
WBOYavant
2024-02-14 09:36:091135parcourir

Allez, désorganisez les touches majuscules

l'éditeur php Strawberry est là pour vous présenter une technique pratique, à savoir "Allez, désorganisez les touches majuscules". Cette technique peut nous aider à programmer plus rapidement et plus efficacement. Lorsque nous écrivons du code, nous devons souvent commenter ou décommenter un morceau de code, et ajouter ou supprimer manuellement des symboles de commentaire peut être relativement fastidieux. Cependant, en utilisant la méthode « Allez, décommenter les touches en majuscules », nous pouvons rapidement commenter ou décommenter le code, ce qui améliore considérablement notre efficacité de travail. Ci-dessous, apprenons ensemble la méthode de fonctionnement spécifique !

Contenu de la question

La clé suivante est toujours en minuscule ? Chapitre 923

Je recherche le moyen le plus simple de désorganiser le yaml non structuré en clés golangcasing. Détails--

Jetez un oeil

https://go.dev/play/p/nihdqorpek1

c'est-à-dire

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))
}
  • Les données de la ligne 10 ne sont toujours pas classées selon les touches minuscules de m.
  • Afin de les désorganiser en touches majuscules, je dois prédéfinir une structure comme la ligne 19.
  • Cependant, le défi auquel je suis confronté est que j'ai affaire à des yaml non structurés, c'est-à-dire que je ne connais pas leur structure à l'avance.

Un commentaire de suivi indiquait qu'ils "passaient de gopkg.in/yaml.v3 à sigs.k8s.io/yaml" , mais en lisant la documentation de sigs.k8s.io/yaml, je pense qu'ils ont encore besoin de comprendre la structure de yaml et le mécanisme de traduction doivent être définis à l'avance.

Existe-t-il un moyen simple de désorganiser le yaml non structuré en clés majuscules/golangcasing ? Quel est le moyen le plus simple ? Si aucun package go ne fournit une telle fonctionnalité prête à l'emploi, existe-t-il des plugins/rappels qui me permettraient de faire facilement la traduction moi-même ?

Solution de contournement

Vous pouvez déclarer un type de clé personnalisé qui implémente l'interface yaml.unmarshaler.

Des choses comme ça :

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
}

Ensuite, utilisez-le comme clé de la carte.

m := make(map[MyKey]any)

https://www.php.cn/link/e18cfe46b96c30852b565e561152d055

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer