国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
Go pointer syntax and addressing problems in the use of viper library
Home Backend Development Golang Why is it necessary to pass pointers when using Go and viper libraries?

Why is it necessary to pass pointers when using Go and viper libraries?

Apr 02, 2025 pm 04:00 PM
go language ai Why igs

Go pointer syntax and addressing problems in the use of viper library

When programming in Go, it is crucial to understand the syntax and usage of pointers, especially when used in combination with third-party libraries such as Viper, you may encounter some issues that require deep understanding. The question we are going to discuss today is about how to correctly pass parameters in the use of the viper library and why passing a pointer to a pointer is necessary.

There are several modules in our project: setting, section, global and main. The specific code is as follows:

Setting module:

 type setting struct {
    vp *viper.viper
}

func newssetting() (*setting, error) {
    vp := viper.new()
    vp.setconfigname("config")
    vp.addconfigpath("configs/")
    vp.setconfigtype("yaml")
    err := vp.readinconfig()
    if err != nil {
        return nil, err
    }

    return &setting{vp: vp}, nil
}

Section module:

 type serversettings struct {
    runmode string
    httpport string
    readtimeout time.duration
    writetimeout time.duration
}

func (s *setting) readsection(k string, v interface{}) error {
    err := s.vp.unmarshalkey(k, v)
    if err != nil {
        return err
    }

    return nil
}

Global module:

 var serversetting *setting.serversettings

Main module:

 setting, err := setting.newsetting()

setting.readsection("server", &global.serversetting)

Now, if you modify the second line to setting.readsection("server", global.serversetting) in the main module, the error result must be addressable (a pointer). Why is this?

The problem is that global.serversetting is already a pointer, why do you need to pass its address when calling the readsection method?

There is a description in the source code of the viper library:

 // newdecoder returns a new decoder for the given configuration. once
// a decoder has been returned, the same configuration must not be used
// again.
func newdecoder(config *decoderconfig) (*decoder, error) {
    val := reflect.valueof(config.result)
    if val.kind() != reflect.ptr {
        return nil, errors.new("result must be a pointer")
    }

    val = val.elem()
    if !val.canaddr() {
        return nil, errors.new("result must be addressable (a pointer)")
    }
}

From this code, we can see that the passed parameters need not only be a pointer, but also need to be addressable (can be addressable). When you pass a pointer to a structure, it cannot be addressed by itself, thus causing an error.

To verify this, we can take a look at the following example:

 package main

import (
    "fmt"
    "reflect"
)

var a *db

type db struct {
}

func main() {
    val := reflect.valueof(a)
    val = val.elem()
    fmt.println(val.canaddr())

    val = reflect.valueof(&a)
    val = val.elem()
    fmt.println(val.canaddr())
}

Running this code will get the following output:

 false
true

This shows that when a is passed (i.e. a pointer), its elements cannot be addressed, while when &a is passed (i.e. a pointer of the pointer), its elements can be addressed.

Therefore, when using the readsection method, we need to pass &global.serversetting, because in this way, the address of a pointer is passed, which can be addressed, thus meeting the requirements of the viper library.

The above is the detailed content of Why is it necessary to pass pointers when using Go and viper libraries?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to withdraw coins on the ok exchange? Detailed tutorial on withdrawing coins on ok exchange How to withdraw coins on the ok exchange? Detailed tutorial on withdrawing coins on ok exchange Jul 03, 2025 pm 02:03 PM

?In today's increasingly popular digital asset trading, it is particularly important to understand how to safely and effectively withdraw your digital assets. As a world-renowned digital asset trading platform, ok exchange provides convenient currency withdrawal services. This tutorial will analyze in detail the steps of withdrawing coins on the ok exchange, things to note, and some common questions and answers to help users complete asset transfer smoothly and ensure asset security. Whether you are using ok exchange for withdrawals for the first time or want to further understand the withdrawal process, this article will provide you with clear and practical guidance.

Binance's 25th issue of HODLer airdrop is coming, 125 million SAHARA is waiting for you to divide it up Binance's 25th issue of HODLer airdrop is coming, 125 million SAHARA is waiting for you to divide it up Jul 04, 2025 pm 06:06 PM

In today's era of rapid development of technology, the integration of artificial intelligence and blockchain is gradually becoming a new trend. The Sahara AI (SAHARA) project came into being, and it is committed to creating the first full-stack AI native blockchain platform, making the future of artificial intelligence more accessible, fair and just, and open to everyone.

High return expectations for cryptocurrency tokens in July 2025: hype or reality? High return expectations for cryptocurrency tokens in July 2025: hype or reality? Jul 04, 2025 pm 08:42 PM

As July 2025 approaches, the crypto market is hotly discussing which tokens may bring high returns. Are names like Pi, PEPE and FloppyPepe really worth the risky investment? Potential cryptocurrencies worth paying attention to in July 2025: virtual fire or real gold? As mid-2025, the heat of discussions on high-yield crypto assets continues to heat up. Bitcoin trends and "altcoin season" expectations have attracted investors' attention. Do tokens like PiNetwork, PEPE and FloppyPepe have the potential to bring considerable investment returns? Let's analyze its prospects one by one. Altcoin Market: Can July get what it wants? Against the backdrop of Bitcoin’s expected record of historical highs, the “altcoin season” seems to be brewing. Back

What currency is bnb What is bnb? What currency is bnb What is bnb? Jul 04, 2025 pm 12:18 PM

BNB is a platform token issued by Binance and has now become a native functional token of the BNB Chain ecosystem. Its main uses include 1. Transaction fee discounts; 2. BNB Chain fuel fee; 3. Participate in the Launchpad project; 4. Payment and consumption. The recommended orders of top exchanges are: 1. Binance, providing the deepest BNB liquidity; 2. Ouyi, comprehensive product line; 3. Huobi, stable and safe operation; 4. Gate.io, rich currency selection; 5. KuCoin, many emerging projects; 6. Kraken, famous for its safety and compliance.

Kane Brown's first romantic comedy movie: From the country stage to the screen! Kane Brown's first romantic comedy movie: From the country stage to the screen! Jul 04, 2025 pm 08:48 PM

Country music icon Kane Brown is about to make his film debut in the romantic comedy The Token Groomsman, joining forces with Taylor Lautner for a great show. Get ready for a screen feast with laughter and tears! From a country singer to a new face on the screen, Kane Brown opens a new chapter! Dear fans, hurry up and calm your cowboy hats! The popular country music superstar Kane Brown will leave the stage temporarily and instead enter the big screen. He will debut as the feature-length feature film in the upcoming romantic comedy "The Best Guy" - not a guest appearance, but a bold attempt to devote himself to the actor's identity! From Nashville, destination

Elon Musk, Sam Altman and Robinhood: A tug-of-war of tokenization? Elon Musk, Sam Altman and Robinhood: A tug-of-war of tokenization? Jul 04, 2025 pm 08:30 PM

Robinhood launched OpenAI and SpaceX tokenized stocks caused controversy, with Elon Musk and Sam Altman fighting each other over the nature of the so-called "fake equity". Recently, the intersection of Elon Musk, Sam Altman and Robinhood has become the focus of public attention, all of which stems from tokenized equity. Robinhood's launch of tokenized stocks in private companies such as OpenAI and SpaceX to European users has sparked heated debate and accompanied by clarification and criticism from all parties. Robinhood's tokenized equity: A bold attempt? Robin, led by CEO Vlad Tenev

Remittix, Monero and Cryptocurrency - The Evolution of Fiatcoin: Why has it caused heated discussion? Remittix, Monero and Cryptocurrency - The Evolution of Fiatcoin: Why has it caused heated discussion? Jul 04, 2025 pm 09:33 PM

Explore Remittix (RTX), Monero (XMR) and Crypto-Fiat Trends: How these projects shape the future of cryptocurrencies through practicality and community orientation. Remittix, Monero and Cryptocurrency Evolution: What is the hottest speculation? The crypto market is always in a dynamic change, and new and old projects are competing for investors' attention. Currently, Remittix (RTX), Monero (XMR) and crypto-fiat currency directions are becoming the focus of discussion. Let’s find out what driving forces are behind this wave of popularity? Remittix: The emerging token with emerging potential is gradually gaining market attention, and its development trajectory has been compared to the early stages of Bitcoin and Ethereum by some people. "CryptoR

Why doesn't stablecoins plummet? How does USDT rely on to preserve its value? Basic analysis of stablecoin Why doesn't stablecoins plummet? How does USDT rely on to preserve its value? Basic analysis of stablecoin Jul 04, 2025 pm 01:48 PM

Stablecoins, as a special type of asset in the cryptocurrency market, have the main goal of maintaining the stability of prices, usually linked to a certain fiat currency (such as the US dollar) or other stable assets. This stability makes stablecoins play an important role in the crypto world, acting as a store of value, a medium of trading, and a safe-haven asset.

See all articles