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 !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Sujets chauds

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1252
24
Le top5 des échanges les plus sûrs en 2025: Guide de Black U pour éviter les stands, la règle de 100% des fonds pour sauver des vies Le top5 des échanges les plus sûrs en 2025: Guide de Black U pour éviter les stands, la règle de 100% des fonds pour sauver des vies May 08, 2025 pm 08:27 PM

Dans le domaine du trading des crypto-monnaies, la sécurité des échanges a toujours été au centre des utilisateurs. En 2025, après des années de développement et d'évolution, certains échanges se distinguent avec leurs mesures de sécurité exceptionnelles et leur expérience utilisateur. Cet article présentera les cinq échanges les plus sécurisés en 2025 et fournira des guides pratiques sur la façon d'éviter les utilisateurs de Black U (Hacker Attacks) pour s'assurer que vos fonds sont à 100% sécurisés.

L'avenir de Go: Tendances et développements L'avenir de Go: Tendances et développements May 02, 2025 am 12:01 AM

GO'sfutureisbrightwithTrends like improvedtooling, génériques, cloud-nativeadoption, performanceenhancements et webassembly integration, butchallengeSincludemainainingImPlicityAnd Improverrorror.

Comprendre les interfaces GO: un guide complet Comprendre les interfaces GO: un guide complet May 01, 2025 am 12:13 AM

GoInterfaceSareMethodsignatisesetSeTyPesmustimplement, permettant de permettre à la transfert depolymorphisms avec une information pour laCleaner, modularCode.Eplicite Implicitement satisfait, utile pour lesquelleserrorSandDeCoupling, ButrequireCarefusetoavoidRumeerRorroSedMaintAntainTaidTaipTyPesafety.

Top 10 des applications de trading de devises virtuelles numériques en 2025 Résumé des 10 principales applications de change de monnaie numérique Top 10 des applications de trading de devises virtuelles numériques en 2025 Résumé des 10 principales applications de change de monnaie numérique May 08, 2025 pm 05:24 PM

Classement des dix principales applications de trading de devises virtuelles numériques en 2025: 1. Binance: diriger le monde, fournir des transactions efficaces et une variété de produits financiers. 2. OKX: Il est innovant et diversifié, soutenant une variété de types de transactions. 3. Huobi: stable et fiable, avec service de haute qualité. 4. Coinbase: Soyez amical pour les débutants et une interface simple. 5. Kraken: le premier choix pour les commerçants professionnels, avec des outils puissants. 6. Bitfinex: trading efficace, paires de trading riches. 7. Bittrex: conformité à la sécurité, coopération réglementaire.

Le dernier didacticiel de téléchargement pour OUYI OKX6.118.0 version Le dernier didacticiel de téléchargement pour OUYI OKX6.118.0 version May 07, 2025 pm 06:51 PM

Le dernier tutoriel de téléchargement pour OUYI OKX6.118.0 Version: 1. Cliquez sur le lien rapide de l'article; 2. Cliquez sur le téléchargement (si vous êtes un utilisateur Web, veuillez d'abord enregistrer les informations). La dernière version Android V6.118.0 optimise certaines fonctions et expériences pour faciliter le trading. Mettez à jour l'application maintenant pour vivre une expérience commerciale plus extrême.

Les 10 meilleures plateformes de crypto-monnaie au monde qui prennent en charge les transactions multi-chaînes sont publiées avec autorité en 2025 Les 10 meilleures plateformes de crypto-monnaie au monde qui prennent en charge les transactions multi-chaînes sont publiées avec autorité en 2025 May 08, 2025 pm 07:15 PM

Selon les dernières évaluations et les tendances de l'industrie des institutions faisant autorité en 2025, les dix principales plateformes de crypto-monnaie au monde sont les dix principales plateformes de crypto-monnaie qui prennent en charge les transactions multi-chaînes, combinant le volume des transactions, l'innovation technologique, la conformité et la réputation de l'utilisateur Analyse complète:

Comprendre la fonction d'init en Go: but et utilisation Comprendre la fonction d'init en Go: but et utilisation May 01, 2025 am 12:16 AM

La poursuite de la théorie des fonctionnalités, les réglementations de configurations, l'orperformance a été utile, utilise-to-nection des fonctionnalités.

Téléchargez la dernière version de OUYI OKX5.1 Téléchargez la dernière version de OUYI OKX5.1 May 07, 2025 pm 06:48 PM

Le dernier tutoriel de téléchargement pour OUYI OKX6.118.0 Version: 1. Cliquez sur le lien rapide de l'article; 2. Cliquez sur le téléchargement (si vous êtes un utilisateur Web, veuillez d'abord enregistrer les informations). La dernière version Android V6.118.0 optimise certaines fonctions et expériences pour faciliter le trading. Mettez à jour l'application maintenant pour vivre une expérience commerciale plus extrême.

See all articles