Home Backend Development Golang Why do all values ​​become the last element when using for range in Go language to traverse slices and store maps?

Why do all values ​​become the last element when using for range in Go language to traverse slices and store maps?

Apr 02, 2025 pm 04:09 PM
go language ai Scope Why

Why do all values ​​become the last element when using for range in Go language to traverse slices and store maps?

Go Map iteration trap: Why all values ​​point to the last element?

When used in combination with map data structures for...range Go, a common trap is prone to occur: when traversing the slice and adding elements to map , all map values ​​eventually point to the last element. This article will analyze its reasons through code examples and provide solutions.

Let's look at a piece of code:

 type Student struct {
    Name string
    Age int
}

func main() {
    m := make(map[string]*Student)
    students := []Student{
        {Name: "pprof.cn", Age: 18},
        {Name: "Test", Age: 23},
        {Name: "Blog", Age: 28},
    }

    for _, stu := range students {
        m[stu.Name] = &stu // The problem is here}
    for k, v := range m {
        fmt.Println(k, "=>", v.Name)
    }
}

The expected result of this code is to store each Student structure in students slice into map . However, the run results show that all map values ​​point to the last element "blog":

 <code>pprof.cn => 博客测试=> 博客博客=> 博客</code>

The root of the problem: variable scope of for...range loop

The problem is that in the for...range loop, stu variable does not create a new variable every iteration. It points to the same memory address in the students slice. Each iteration, the value of stu is updated, but its memory address remains the same. So when the loop is over, all pointers in map point to the final value of stu (the last element).

Solution: Create a new copy of the variable

To solve this problem, we need to create a copy of the stu variable in each iteration, making sure that map stores different memory addresses. The modified code is as follows:

 for _, stu := range students {
    newStu := stu // Create a copy m[newStu.Name] = &newStu
}

Or, a more concise way is to create a new Student structure directly:

 for _, stu := range students {
    m[stu.Name] = &Student{Name: stu.Name, Age: stu.Age} // Create a new Student instance}

With the above modification, each value in map will point to a different memory address, avoiding the case where all values ​​point to the last element. Running the modified code will get the expected results.

Hopefully this explanation will help you understand the details of for...range loops and map data structures in Go and avoid such traps.

The above is the detailed content of Why do all values ​​become the last element when using for range in Go language to traverse slices and store maps?. 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 flow of funds on the chain is exposed: What new tokens are being bet on by Clever Money? The flow of funds on the chain is exposed: What new tokens are being bet on by Clever Money? Jul 16, 2025 am 10:15 AM

Ordinary investors can discover potential tokens by tracking "smart money", which are high-profit addresses, and paying attention to their trends can provide leading indicators. 1. Use tools such as Nansen and Arkham Intelligence to analyze the data on the chain to view the buying and holdings of smart money; 2. Use Dune Analytics to obtain community-created dashboards to monitor the flow of funds; 3. Follow platforms such as Lookonchain to obtain real-time intelligence. Recently, Cangming Money is planning to re-polize LRT track, DePIN project, modular ecosystem and RWA protocol. For example, a certain LRT protocol has obtained a large amount of early deposits, a certain DePIN project has been accumulated continuously, a certain game public chain has been supported by the industry treasury, and a certain RWA protocol has attracted institutions to enter.

Who is suitable for stablecoin DAI_ Analysis of decentralized stablecoin usage scenarios Who is suitable for stablecoin DAI_ Analysis of decentralized stablecoin usage scenarios Jul 15, 2025 pm 11:27 PM

DAI is suitable for users who attach importance to the concept of decentralization, actively participate in the DeFi ecosystem, need cross-chain asset liquidity, and pursue asset transparency and autonomy. 1. Supporters of the decentralization concept trust smart contracts and community governance; 2. DeFi users can be used for lending, pledge, and liquidity mining; 3. Cross-chain users can achieve flexible transfer of multi-chain assets; 4. Governance participants can influence system decisions through voting. Its main scenarios include decentralized lending, asset hedging, liquidity mining, cross-border payments and community governance. At the same time, it is necessary to pay attention to system risks, mortgage fluctuations risks and technical threshold issues.

Bitcoin, Chainlink, and RWA resonance rise: crypto market enters institutional logic? Bitcoin, Chainlink, and RWA resonance rise: crypto market enters institutional logic? Jul 16, 2025 am 10:03 AM

The coordinated rise of Bitcoin, Chainlink and RWA marks the shift toward institutional narrative dominance in the crypto market. Bitcoin, as a macro hedging asset allocated by institutions, provides a stable foundation for the market; Chainlink has become a key bridge connecting the reality and the digital world through oracle and cross-chain technology; RWA provides a compliance path for traditional capital entry. The three jointly built a complete logical closed loop of institutional entry: 1) allocate BTC to stabilize the balance sheet; 2) expand on-chain asset management through RWA; 3) rely on Chainlink to build underlying infrastructure, indicating that the market has entered a new stage driven by real demand.

What is a DAO organization? Guide to Decentralized Autonomous Community What is a DAO organization? Guide to Decentralized Autonomous Community Jul 15, 2025 pm 07:45 PM

DAO is a decentralized autonomous organization owned and managed by community members and automatically enforces rules through smart contracts. 1. It does not have traditional management, and decisions are decided by collective voting; 2. Governance tokens give members the voting rights, the more tokens, the greater the weight; 3. Proposals are initiated and voted by the community, and will be automatically executed by the smart contract after receiving the majority support. Its core features include decentralization, autonomy and transparency, and all rules and capital flows are open and auditable. The importance of DAO is to create a more fair, efficient and cohesive collaboration model, breaking regional and identity restrictions, and improving trust and operational efficiency.

How to trade stablecoins_A full flow diagram for beginners buying and selling How to trade stablecoins_A full flow diagram for beginners buying and selling Jul 18, 2025 am 06:00 AM

The stablecoin trading process includes the steps of registering an exchange, completing certification, buying or selling. First, choose a trusted exchange such as Binance, OKX, etc., and then complete KYC identity authentication, and then buy stablecoins through fiat currency recharge or OTC transactions. You can also transfer the stablecoins to the fund account and sell them through P2P transactions and withdraw them to the bank card or Alipay. When operating, you need to pay attention to choosing a regulated platform, confirm transaction security and handling fees.

What are the cryptocurrency market websites? Recommended virtual currency market websites What are the cryptocurrency market websites? Recommended virtual currency market websites Jul 17, 2025 pm 09:30 PM

In the ever-changing virtual currency market, timely and accurate market data is crucial. The free market website provides investors with a convenient way to understand key information such as price fluctuations, trading volume, and market value changes of various digital assets in real time. These platforms usually aggregate data from multiple exchanges, and users can get a comprehensive market overview without switching between exchanges, which greatly reduces the threshold for ordinary investors to obtain information.

Pre-sales of Filecoin, Render, and AI storage are heating up: Is the explosion point of Web3 infrastructure coming? Pre-sales of Filecoin, Render, and AI storage are heating up: Is the explosion point of Web3 infrastructure coming? Jul 16, 2025 am 09:51 AM

Yes, Web3 infrastructure is exploding expectations as demand for AI heats up. Filecoin integrates computing power through the "Compute over Data" plan to support AI data processing and training; Render Network provides distributed GPU computing power to serve AIGC graph rendering; Arweave supports AI model weights and data traceability with permanent storage characteristics; the three are combining technology upgrades and ecological capital promotion, and are moving from the edge to the underlying core of AI.

Which is better, DAI or USDC?_Is DAI suitable for long-term holding? Which is better, DAI or USDC?_Is DAI suitable for long-term holding? Jul 15, 2025 pm 11:18 PM

Is DAI suitable for long-term holding? The answer depends on individual needs and risk preferences. 1. DAI is a decentralized stablecoin, generated by excessive collateral for crypto assets, suitable for users who pursue censorship resistance and transparency; 2. Its stability is slightly inferior to USDC, and may experience slight deansal due to collateral fluctuations; 3. Applicable to lending, pledge and governance scenarios in the DeFi ecosystem; 4. Pay attention to the upgrade and governance risks of MakerDAO system. If you pursue high stability and compliance guarantees, it is recommended to choose USDC; if you attach importance to the concept of decentralization and actively participate in DeFi applications, DAI has long-term value. The combination of the two can also improve the security and flexibility of asset allocation.

See all articles