Table des matières
Syntaxe de pointeur et résoudre les problèmes dans l'utilisation de la bibliothèque Viper
Maison développement back-end Golang Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper?

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper?

Apr 02, 2025 pm 04:00 PM
go语言 ai Pourquoi igs

Syntaxe de pointeur et résoudre les problèmes dans l'utilisation de la bibliothèque Viper

Lors de la programmation en Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier lorsqu'ils sont utilisés en combinaison avec des bibliothèques tierces telles que Viper, vous pouvez rencontrer des problèmes qui nécessitent une compréhension approfondie. La question que nous allons discuter aujourd'hui est de savoir comment passer correctement les paramètres dans l'utilisation de la bibliothèque Viper et pourquoi passer un pointeur à un pointeur est nécessaire.

Il existe plusieurs modules dans notre projet: réglage, section, global et principal. Le code spécifique est le suivant:

Module de réglage:

 Type Setting Struct {
    VP * Viper.viper
}

func newseting () (* Paramètre, erreur) {
    vp: = viper.new ()
    vp.setConfigname ("config")
    vp.addconfigpath ("configs /")
    vp.setConfigType ("yaml")
    err: = vp.readinconfig ()
    Si err! = Nil {
        Renvoie nil, euh
    }

    retour et réglage {vp: vp}, nil
}
Copier après la connexion

Module de section:

 Type SERVERSettings struct {
    String RunMode
    chaîne httpport
    Lectimeout Time.Duration
    writeTimeout Time.Duration
}

Func (S * Setting) ReadSection (K String, V Interface {}) Erreur {
    err: = s.vp.unmarshalkey (k, v)
    Si err! = Nil {
        retourner err
    }

    retour nil
}
Copier après la connexion

Module global:

 var serversetting * setting.serversettings
Copier après la connexion

Module principal:

 paramètre, err: = setting.newsetting ()

Setting.ReadSection ("Server" et Global.Serversetting)
Copier après la connexion

Maintenant, si vous modifiez la deuxième ligne à Setting.ReadSection ("Server", Global.Serversetting) Dans le module principal, le résultat d'erreur doit être adressable (un pointeur). Pourquoi est-ce?

Le problème est que Global.Serversetting est déjà un pointeur, pourquoi avez-vous besoin de passer son adresse lorsque vous appelez la méthode de lecture?

Il y a une description dans le code source de la bibliothèque Viper:

 // newDecoder renvoie un nouveau décodeur pour la configuration donnée. une fois
// Un décodeur a été retourné, la même configuration ne doit pas être utilisée
// encore.
func newdecoder (config * DecoderConfig) (* Decoder, Error) {
    val: = reflev.valueof (config.result)
    si val.kind ()! = reflev.ptr {
        return nil, errors.new ("le résultat doit être un pointeur")
    }

    val = val.elem ()
    si! Val.canaddr () {
        return nil, errors.new ("Le résultat doit être adressable (un pointeur)")
    }
}
Copier après la connexion

À partir de ce code, nous pouvons voir que les paramètres passés doivent non seulement être un pointeur, mais aussi être adressables (peuvent être adressables). Lorsque vous passez un pointeur vers une structure, il ne peut pas être traité par lui-même, provoquant ainsi une erreur.

Pour vérifier cela, nous pouvons jeter un œil à l'exemple suivant:

 package principal

importer (
    "FMT"
    "refléter"
)

var a * db

Tapez db struct {
}

func main () {
    Val: = refléte.Valueof (a)
    val = val.elem ()
    fmt.println (val.canaddr ())

    val = réflect.valueof (& a)
    val = val.elem ()
    fmt.println (val.canaddr ())
}
Copier après la connexion

L'exécution de ce code obtiendra la sortie suivante:

 FAUX
vrai
Copier après la connexion

Cela montre que lorsque A est passé (c'est-à-dire un pointeur), ses éléments ne peuvent pas être traités, tandis que lorsque & a est passé (c'est-à-dire un pointeur du pointeur), ses éléments peuvent être traités.

Par conséquent, lors de l'utilisation de la méthode de lecture, nous devons passer et global.

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Prévisions des prix WorldCoin (WLD) 2025-2031: WLD atteindra-t-il 4 $ d'ici 2031? Prévisions des prix WorldCoin (WLD) 2025-2031: WLD atteindra-t-il 4 $ d'ici 2031? Apr 21, 2025 pm 02:42 PM

WorldCoin (WLD) se démarque sur le marché des crypto-monnaies avec ses mécanismes uniques de vérification biométrique et de protection de la vie privée, attirant l'attention de nombreux investisseurs. WLD a permis de se produire avec remarquablement parmi les Altcoins avec ses technologies innovantes, en particulier en combinaison avec la technologie d'Intelligence artificielle OpenAI. Mais comment les actifs numériques se comporteront-ils au cours des prochaines années? Prédons ensemble le prix futur de WLD. Les prévisions de prix de 2025 WLD devraient atteindre une croissance significative de la WLD en 2025. L'analyse du marché montre que le prix moyen du WLD peut atteindre 1,31 $, avec un maximum de 1,36 $. Cependant, sur un marché baissier, le prix peut tomber à environ 0,55 $. Cette attente de croissance est principalement due à WorldCoin2.

Que signifie la transaction transversale? Quelles sont les transactions transversales? Que signifie la transaction transversale? Quelles sont les transactions transversales? Apr 21, 2025 pm 11:39 PM

Échanges qui prennent en charge les transactions transversales: 1. Binance, 2. UniSwap, 3. Sushiswap, 4. Curve Finance, 5. Thorchain, 6. 1inch Exchange, 7. DLN Trade, ces plateformes prennent en charge les transactions d'actifs multi-chaînes via diverses technologies.

Aavenomics est une recommandation pour modifier le jeton Aave Protocol et introduire le rachat de jetons, qui a atteint le nombre de personnes quorum. Aavenomics est une recommandation pour modifier le jeton Aave Protocol et introduire le rachat de jetons, qui a atteint le nombre de personnes quorum. Apr 21, 2025 pm 06:24 PM

Aavenomics est une proposition de modification du jeton de protocole Aave et d'introduire des dépens de jetons, qui a mis en œuvre un quorum pour Aavedao. Marc Zeller, fondateur de l'Aave Project Chain (ACI), l'a annoncé sur X, notant qu'il marque une nouvelle ère pour l'accord. Marc Zeller, fondateur de l'Aave Chain Initiative (ACI), a annoncé sur X que la proposition d'Aavenomics comprend la modification du jeton Aave Protocol et l'introduction de dépens de jetons, a obtenu un quorum pour Aavedao. Selon Zeller, cela marque une nouvelle ère pour l'accord. Les membres d'Aavedao ont voté massivement pour soutenir la proposition, qui était de 100 par semaine mercredi

Comment gagner des récompenses de plateaux aériens du noyau sur la stratégie de processus complète de la binance Comment gagner des récompenses de plateaux aériens du noyau sur la stratégie de processus complète de la binance Apr 21, 2025 pm 01:03 PM

Dans le monde animé des crypto-monnaies, de nouvelles opportunités émergent toujours. À l'heure actuelle, l'activité aérienne de Kerneldao (noyau) attire beaucoup l'attention et attire l'attention de nombreux investisseurs. Alors, quelle est l'origine de ce projet? Quels avantages le support BNB peut-il en tirer? Ne vous inquiétez pas, ce qui suit le révélera un par un pour vous.

Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Quel est le tableau d'analyse de la structure du produit fini par Bitcoin? Comment dessiner? Apr 21, 2025 pm 07:42 PM

Les étapes pour dessiner un tableau d'analyse de structure Bitcoin comprennent: 1. Déterminez l'objectif et le public du dessin, 2. Sélectionnez le bon outil, 3. Concevez le cadre et remplissez les composants principaux, 4. Reportez-vous au modèle existant. Les étapes complètes garantissent que le graphique est exact et facile à comprendre.

Quelles sont les plateformes de trading de blockchain hybrides? Quelles sont les plateformes de trading de blockchain hybrides? Apr 21, 2025 pm 11:36 PM

Suggestions de choix d'un échange de crypto-monnaie: 1. Pour les exigences de liquidité, la priorité est Binance, Gate.io ou Okx, en raison de sa profondeur de commande et de sa forte résistance à la volatilité. 2. Conformité et sécurité, Coinbase, Kraken et Gemini ont une approbation réglementaire stricte. 3.

Rexas Finance (RXS) peut dépasser Solana (Sol), Cardano (ADA), XRP et Dogecoin (DOGE) en 2025 Rexas Finance (RXS) peut dépasser Solana (Sol), Cardano (ADA), XRP et Dogecoin (DOGE) en 2025 Apr 21, 2025 pm 02:30 PM

Sur le marché volatil des crypto-monnaies, les investisseurs recherchent des alternatives qui vont au-delà des devises populaires. Bien que les crypto-monnaies bien connues telles que Solana (Sol), Cardano (ADA), XRP et Dogecoin (DOGE) sont également confrontées à des défis tels que le sentiment du marché, l'incertitude réglementaire et l'évolutivité. Cependant, un nouveau projet émergent, la rexasfinance (RXS), est en émergence. Il ne s'appuie pas sur les effets de célébrités ou le battage médiatique, mais se concentre sur la combinaison des actifs du monde réel (RWA) avec la technologie de la blockchain pour offrir aux investisseurs une façon innovante d'investir. Cette stratégie le fait espérer être l'un des projets les plus réussis de 2025. Rexasfi

Classement des échanges à effet de levier dans le cercle des devises Les dernières recommandations des dix premiers échanges à effet de levier dans le cercle des devises Classement des échanges à effet de levier dans le cercle des devises Les dernières recommandations des dix premiers échanges à effet de levier dans le cercle des devises Apr 21, 2025 pm 11:24 PM

Les plates-formes qui ont des performances exceptionnelles dans le commerce, la sécurité et l'expérience utilisateur en effet de levier en 2025 sont: 1. OKX, adaptés aux traders à haute fréquence, fournissant jusqu'à 100 fois l'effet de levier; 2. Binance, adaptée aux commerçants multi-monnaies du monde entier, offrant un effet de levier 125 fois élevé; 3. Gate.io, adapté aux joueurs de dérivés professionnels, fournissant 100 fois l'effet de levier; 4. Bitget, adapté aux novices et aux commerçants sociaux, fournissant jusqu'à 100 fois l'effet de levier; 5. Kraken, adapté aux investisseurs stables, fournissant 5 fois l'effet de levier; 6. BUTBIT, adapté aux explorateurs Altcoin, fournissant 20 fois l'effet de levier; 7. Kucoin, adapté aux commerçants à faible coût, fournissant 10 fois l'effet de levier; 8. Bitfinex, adapté au jeu senior

See all articles