golang陣列問題,想了一個上午沒發現問題出在哪,求大神幫忙解答一下

littlebeast0發表於2019-05-21

這是我的一段程式碼,我把陣列 [] Node 作為一個引數傳遞給 Init 函式,希望將其儲存在 Server 結構體裡的 nodes 陣列中。

package main

import (
    "fmt"
)

type Node struct {
    id  string
    ipaddr string
}

type Server struct {
    nodes [5]*Node
    num int
}

func (s *Server)Init(n int, nodes []Node) {
    s.num = n
    for idx,v := range nodes {
        s.nodes[idx] = &v
    }
}

func (s *Server)Print() {
    for idx,v := range s.nodes {
        if(v!=nil) {
            fmt.Printf("%d) %s--%s\n", idx, v.id, v.ipaddr)
        }   
    }
}

func main() {
    nodes := []Node {
        Node{"0", "192.168.0.0.0"},
        Node{"1", "192.168.0.0.1"},
        Node{"2", "192.168.0.0.2"},
    }

    var s Server
    s.Init(3, nodes)
    s.Print()
}

期望輸出: > 0) 0--192.168.0.0.0<br/> 1) 1--192.168.0.0.1<br/> 2) 2--192.168.0.0.2<br/>

實際輸出: > 0) 2--192.168.0.0.2<br/> 1) 2--192.168.0.0.2<br/> 2) 2--192.168.0.0.2<br/>

陣列中的前幾個元素都被最後一個新增的元素給覆蓋了。不知道什麼原因。 大神們能幫我看一下問題出在哪麼,出錯的具體原因在哪

更多原創文章乾貨分享,請關注公眾號
  • golang陣列問題,想了一個上午沒發現問題出在哪,求大神幫忙解答一下
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章