2015-11-05 29 views
0
分配映射到地圖

林創建並預先填充相似的子圖,然後當我分配給它,我知道我已經結束了引用同一個變量。在Golang

你可以檢查出來here

package main 

import "fmt" 
import "strconv" 

func main() { 
    fmt.Println("Hello, playground") 
    var hour map[string]map[string]string 
    var minutes map[string]string 

    minutes = make(map[string]string) 
    for i := 0; i < 2; i++ { 
     iString := strconv.Itoa(i) 
     minutes[iString] = "EMPTY" 
    } 
    fmt.Println("Minutes") 
    fmt.Println(minutes) 

    hour = make(map[string]map[string]string) 
    for i := 0; i < 2; i++ { 
     iString := strconv.Itoa(i) 
     hour[iString] = make(map[string]string) 
     hour[iString] = minutes 
    } 
    fmt.Println("Hour") 
    fmt.Println(hour) 

    hour["0"]["1"] = "FULL" 
    fmt.Println("Modified Hour") 
    fmt.Println(hour) 
} 

所以,很顯然,這兩個hour["0"]["1"]hour["1"]["1"]已被修改。

在這種情況下,一種方法是在地圖minutes複製到我爲每小時創建的新地圖。是這個唯一的辦法?

如果是,則copying maps over a for loop是最好的辦法。那是對的嗎?

回答

1

在這種情況下,一種方法是將地圖分鐘複製到我爲每個小時創建的新地圖中。這是唯一的方法嗎?

是的。還有什麼可以工作? Go沒有抄寫或類似的概念。

如果是,那麼通過for循環複製映射是最好的方法。那是對的嗎?

是的。 (但取決於你對「最好」的定義)。