亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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)

The top 10 most authoritative cryptocurrency market websites in the world (the latest version of 2025) The top 10 most authoritative cryptocurrency market websites in the world (the latest version of 2025) Jul 29, 2025 pm 12:48 PM

The top ten authoritative cryptocurrency market and data analysis platforms in 2025 are: 1. CoinMarketCap, providing comprehensive market capitalization rankings and basic market data; 2. CoinGecko, providing multi-dimensional project evaluation with independence and trust scores; 3. TradingView, having the most professional K-line charts and technical analysis tools; 4. Binance market, providing the most direct real-time data as the largest exchange; 5. Ouyi market, highlighting key derivative indicators such as position volume and capital rate; 6. Glassnode, focusing on on-chain data such as active addresses and giant whale trends; 7. Messari, providing institutional-level research reports and strict standardized data; 8. CryptoCompa

How to choose a free market website in the currency circle? The most comprehensive review in 2025 How to choose a free market website in the currency circle? The most comprehensive review in 2025 Jul 29, 2025 pm 06:36 PM

The most suitable tools for querying stablecoin markets in 2025 are: 1. Binance, with authoritative data and rich trading pairs, and integrated TradingView charts suitable for technical analysis; 2. Ouyi, with clear interface and strong functional integration, and supports one-stop operation of Web3 accounts and DeFi; 3. CoinMarketCap, with many currencies, and the stablecoin sector can view market value rankings and deans; 4. CoinGecko, with comprehensive data dimensions, provides trust scores and community activity indicators, and has a neutral position; 5. Huobi (HTX), with stable market conditions and friendly operations, suitable for mainstream asset inquiries; 6. Gate.io, with the fastest collection of new coins and niche currencies, and is the first choice for projects to explore potential; 7. Tra

What is a stablecoin? Understand stablecoins in one article! What is a stablecoin? Understand stablecoins in one article! Jul 29, 2025 pm 01:03 PM

Stablecoins are cryptocurrencies with value anchored by fiat currency or commodities, designed to solve price fluctuations such as Bitcoin. Their importance is reflected in their role as a hedging tool, a medium of trading and a bridge connecting fiat currency with the crypto world. 1. The fiat-collateralized stablecoins are fully supported by fiat currencies such as the US dollar. The advantage is that the mechanism is simple and stable. The disadvantage is that they rely on the trust of centralized institutions. They represent the projects including USDT and USDC; 2. The cryptocurrency-collateralized stablecoins are issued through over-collateralized mainstream crypto assets. The advantages are decentralization and transparency. The disadvantage is that they face liquidation risks. The representative project is DAI. 3. The algorithmic stablecoins rely on the algorithm to adjust supply and demand to maintain price stability. The advantages are that they do not need to be collateral and have high capital efficiency. The disadvantage is that the mechanism is complex and the risk is high. There have been cases of dean-anchor collapse. They are still under investigation.

Ethena treasury strategy: the rise of the third empire of stablecoin Ethena treasury strategy: the rise of the third empire of stablecoin Jul 30, 2025 pm 08:12 PM

The real use of battle royale in the dual currency system has not yet happened. Conclusion In August 2023, the MakerDAO ecological lending protocol Spark gave an annualized return of $DAI8%. Then Sun Chi entered in batches, investing a total of 230,000 $stETH, accounting for more than 15% of Spark's deposits, forcing MakerDAO to make an emergency proposal to lower the interest rate to 5%. MakerDAO's original intention was to "subsidize" the usage rate of $DAI, almost becoming Justin Sun's Solo Yield. July 2025, Ethe

Why is Bitcoin with a ceiling? Why is the maximum number of Bitcoins 21 million Why is Bitcoin with a ceiling? Why is the maximum number of Bitcoins 21 million Jul 30, 2025 pm 10:30 PM

The total amount of Bitcoin is 21 million, which is an unchangeable rule determined by algorithm design. 1. Through the proof of work mechanism and the issuance rule of half of every 210,000 blocks, the issuance of new coins decreased exponentially, and the additional issuance was finally stopped around 2140. 2. The total amount of 21 million is derived from summing the equal-scale sequence. The initial reward is 50 bitcoins. After each halving, the sum of the sum converges to 21 million. It is solidified by the code and cannot be tampered with. 3. Since its birth in 2009, all four halving events have significantly driven prices, verified the effectiveness of the scarcity mechanism and formed a global consensus. 4. Fixed total gives Bitcoin anti-inflation and digital yellow metallicity, with its market value exceeding US$2.1 trillion in 2025, becoming the fifth largest capital in the world

What is Binance Treehouse (TREE Coin)? Overview of the upcoming Treehouse project, analysis of token economy and future development What is Binance Treehouse (TREE Coin)? Overview of the upcoming Treehouse project, analysis of token economy and future development Jul 30, 2025 pm 10:03 PM

What is Treehouse(TREE)? How does Treehouse (TREE) work? Treehouse Products tETHDOR - Decentralized Quotation Rate GoNuts Points System Treehouse Highlights TREE Tokens and Token Economics Overview of the Third Quarter of 2025 Roadmap Development Team, Investors and Partners Treehouse Founding Team Investment Fund Partner Summary As DeFi continues to expand, the demand for fixed income products is growing, and its role is similar to the role of bonds in traditional financial markets. However, building on blockchain

What is Bitcoin Taproot Upgrade? What are the benefits of Taproot? What is Bitcoin Taproot Upgrade? What are the benefits of Taproot? Jul 30, 2025 pm 08:27 PM

Directory What is Bitcoin? How does Bitcoin work? Why is Bitcoin not scalable? What is BIP (Bitcoin Improvement Proposal)? What is Bitcoin Taproot Update? Pay to Taproot (P2TR): Benefits of Taproot: Space-saving privacy advantages Security upgrade conclusion: ?Bitcoin is the first digital currency that can send and receive funds without using a third party. Since Bitcoin is software, like any other software, it needs updates and bug fixes. Bitcoin Taproot is such an update that introduces new features to Bitcoin. Cryptocurrency is a hot topic now. People have been talking about it for years, but now with prices rising rapidly, suddenly everyone decides to join and invest in them. Message

What is a stablecoin and why it can change the future What is a stablecoin and why it can change the future Jul 29, 2025 pm 01:09 PM

Stable coins are cryptocurrencies whose value is linked to stable assets such as the US dollar. They aim to solve the problem of large price fluctuations such as Bitcoin. There are three main types: 1. Fiat currency collateralized stablecoins, such as USDT and USDC, are supported by the issuer's reserves of equivalent fiat currencies; 2. Money collateralized stablecoins, such as DAI, are generated by over-collateralized crypto assets; 3. Algorithmic stablecoins, relying on smart contracts to adjust supply and demand to maintain price stability. The reason why stablecoins can change the future is: 1. It is a bridge connecting the traditional finance and the crypto world, reducing the threshold for user entry; 2. Achieve efficient and low-cost global payments and settlements, greatly improving the efficiency of cross-border capital flow; 3. It forms the cornerstone of decentralized finance (DeFi), for lending, transactions, etc.

See all articles