


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 PMSyntaxe 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 }
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 }
Module global:
var serversetting * setting.serversettings
Module principal:
paramètre, err: = setting.newsetting () Setting.ReadSection ("Server" et Global.Serversetting)
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)") } }
à 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 ()) }
L'exécution de ce code obtiendra la sortie suivante:
FAUX vrai
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Les dix principales plateformes de marché de crypto-monnaie et d'analyse de données faisant autorité en 2025 sont: 1. CoinmarketCap, fournissant des classements de capitalisation boursière complets et des données de marché de base; 2. Coingecko, fournissant une évaluation de projet multidimensionnelle avec des scores d'indépendance et de confiance; 3. TradingView, ayant les cartes K-Line les plus professionnelles et les outils d'analyse technique; 4. Marché de la binance, fournissant les données les plus directes en temps réel comme le plus grand échange; 5. Marché d'Ouyi, mettant en évidence des indicateurs dérivés clés tels que le volume de position et le taux de capital; 6. Glassnode, en se concentrant sur les données sur cha?ne telles que les adresses actives et les tendances des baleines géantes; 7. Messari, fournissant des rapports de recherche au niveau institutionnel et des données strictes strictes; 8. Cryptocompa

Ethereum est une plate-forme d'application décentralisée basée sur des contrats intelligents, et son ETH de token natif peut être obtenu de diverses manières. 1. Enregistrez un compte via des plateformes centralisées telles que Binance et OUYIOK, complétez la certification KYC et achetez ETH avec des stablecoins; 2. Connectez-vous au stockage numérique via des plates-formes décentralisées et échangez directement ETH avec des stablescoins ou d'autres jetons; 3. Participer à un engagement de réseau et vous pouvez choisir un engagement indépendant (nécessite 32 ETH), des services de gage liquide ou un engagement en un clic sur la plate-forme centralisée pour obtenir des récompenses; 4. Gagnez ETH en fournissant des services aux projets Web3, en effectuant des taches ou en obtenant des Airdrops. Il est recommandé que les débutants partent des plates-formes centralisées traditionnelles, passent progressivement vers des méthodes décentralisées et attachent toujours de l'importance à la sécurité des actifs et à la recherche indépendante, à

Les outils les plus appropriés pour interroger les marchés des stables en 2025 sont: 1. Binance, avec des données faisant autorité et des paires de trading riches, et des graphiques de tradingview intégrés adaptés à une analyse technique; 2. Ouyi, avec une interface claire et une forte intégration fonctionnelle, et prend en charge le fonctionnement unique des comptes Web3 et Defi; 3. CoinmarketCap, avec de nombreuses devises, et le secteur des stablescoin peut afficher le classement des valeurs de marché et les doyens; 4. Coingecko, avec des dimensions de données complètes, fournit des scores de confiance et des indicateurs d'activité communautaire, et a une position neutre; 5. Huobi (HTX), avec des conditions de marché stables et des opérations amicales, adaptées aux demandes d'actifs traditionnelles; 6. Gate.io, avec la collection la plus rapide de nouvelles pièces de monnaie et de niche, et est le premier choix pour les projets pour explorer le potentiel; 7. tra

L'utilisation réelle de Battle Royale dans le système de double monnaie ne s'est pas encore produite. Conclusion En ao?t 2023, l'étincelle du protocole de prêt écologique Makerdao a donné un rendement annualisé de Dai8% $. Ensuite, Sun Chi est entré en lots, investissant un total de 230 000 $ Steth, représentant plus de 15% des dép?ts de Spark, for?ant Makerdao à faire une proposition d'urgence pour réduire le taux d'intérêt à 5%. L'intention initiale de Makerdao était de "subventionner" le taux d'utilisation de $ dai, devenant presque le rendement en solo de Justin Sun. Juillet 2025, Ethe

Répertoire Qu'est-ce que Bitcoin? Comment fonctionne Bitcoin? Pourquoi Bitcoin n'est-il pas évolutif? Qu'est-ce que le BIP (Bitcoin Improvement Proposition)? Qu'est-ce que la mise à jour Bitcoin Taproot? Pay to Taproot (P2TR): Avantages de la racine de tapoot: Avantages de la confidentialité Sauve-Savation Conclusion de mise à niveau de la sécurité: ?BitCoin est la première monnaie numérique qui peut envoyer et recevoir des fonds sans utiliser de tiers. étant donné que Bitcoin est un logiciel, comme tout autre logiciel, il a besoin de mises à jour et de corrections de bogues. Bitcoin Taproot est une telle mise à jour qui introduit de nouvelles fonctionnalités de Bitcoin. La crypto-monnaie est maintenant un sujet br?lant. Les gens en parlent depuis des années, mais maintenant, les prix augmentant rapidement, tout le monde décide de se joindre et d'investir en eux. Message

Qu'est-ce que Treehouse (Tree)? Comment fonctionne Treehouse (Tree)? Treehouse Products Tethdor - Taux de citation décentralisé Gonuts Points Système Treehouse met en évidence les jetons d'arbre et l'économie des jetons Présentation du troisième trimestre de l'équipe de développement de la feuille de route 2025, des investisseurs et des partenaires Treehouse Team Investment Fund Résumé Partenaire, car DeFi continue d'étendre les marques financières, la demande de produits à revenu fixe est en croissance, et son r?le est similaire au r?le des liaisons dans les marques financières traditionnelles. Cependant, construire sur la blockchain

Table des matières Crypto Market Panoramic Nugget Popular Token Vinevine (114,79%, valeur marchande circulaire de 144 millions de dollars) Zorazora (16,46%, valeur marchande circulaire de 290 millions de dollars américains) NAVXNAVIPROTOCOL (10,36%, valeur marchande circulaire de la cha?ne éthereum de 25,7624 millions de dollars) et alpha interprètes le NFT sur les ventes de NFT sur la cha?ne éthereum dans la cha?ne de séquences de séquences) et l'alpha interprète la NFT sur la cha?ne éthereum dans la cha?ne de séquences de séquences) et les alpha et les interventions NFT sur la pénu Les cryptopunks classés en premier dans le réseau de prover décentralisé succinct ont lancé la fondation succincte, qui peut être le token tge

Les stablecoins sont des crypto-monnaies avec une valeur ancrée par la monnaie ou les produits Fiat, con?us pour résoudre les fluctuations des prix telles que le bitcoin. Leur importance se reflète dans leur r?le d'outil de couverture, un moyen de négociation et un pont reliant la monnaie fiduciaire avec le monde cryptographique. 1. Les stablecoins fiat-collatéralisées sont pleinement soutenues par des monnaies fiduciaires telles que le dollar américain. L'avantage est que le mécanisme est simple et stable. L'inconvénient est qu'ils comptent sur la confiance des institutions centralisées. Ils représentent les projets, notamment USDT et USDC; 2. Les stablecoins collatéralisées en crypto-monnaie sont émises par des actifs cryptographiques traditionnels sur-collatéralisés. Les avantages sont la décentralisation et la transparence. L'inconvénient est qu'ils sont confrontés à des risques de liquidation. Le projet représentatif est DAI. 3. Les stablescoins algorithmiques reposent sur l'algorithme pour ajuster l'offre et la demande pour maintenir la stabilité des prix. Les avantages sont qu'ils n'ont pas besoin d'être garantis et ont une efficacité de capital élevée. L'inconvénient est que le mécanisme est complexe et que le risque est élevé. Il y a eu des cas d'effondrement du doyen. Ils font toujours l'objet d'une enquête.
