mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-08-06 15:32:19 +00:00
fmt
This commit is contained in:
@@ -63,4 +63,4 @@ m.Add("item", "3") // panic: assignment to entry in nil map
|
||||
|
||||
對Get的最後一次調用中,nil接收器的行爲卽是一個空map的行爲。我們可以等價地將這個操作寫成Value(nil).Get("item"),但是如果你直接寫nil.Get("item")的話是無法通過編譯的,因爲nil的字面量編譯器無法判斷其準備類型。所以相比之下,最後的那行m.Add的調用就會産生一個panic,因爲他嚐試更新一個空map。
|
||||
|
||||
由於url.Values是一個map類型,併且間接引用了其key/value對,因此url.Values.Add對這個map里的元素做任何的更新、刪除操作對調用方都是可見的。實際上,就像在普通函數中一樣,雖然可以通過引用來操作內部值,但在方法想要脩改引用本身是不會影響原始值的,比如把他置爲nil,或者讓這個引用指向了其它的對象,調用方都不會受影響。(譯註:因爲傳入的是存儲了內存地址的變量,你改變這個變量是影響不了原始的變量的,想想C語言,是差不多的)
|
||||
由於url.Values是一個map類型,併且間接引用了其key/value對,因此url.Values.Add對這個map里的元素做任何的更新、刪除操作對調用方都是可見的。實際上,就像在普通函數中一樣,雖然可以通過引用來操作內部值,但在方法想要脩改引用本身是不會影響原始值的,比如把他置爲nil,或者讓這個引用指向了其它的對象,調用方都不會受影響。(譯註:因爲傳入的是存儲了內存地址的變量,你改變這個變量是影響不了原始的變量的,想想C語言,是差不多的)
|
||||
|
Reference in New Issue
Block a user