在 Go 的“net/http”包中,有一個名為ResponseWriter. 這個接口有一個方法叫做Header() Header. 由于Header該值Header()返回的是一個值,而不是一個指針,我假定該函數將不會返回的實際Header值是私有的,ResponseWriter而是一個副本。然而,情況似乎并非如此。ResponseWritershow的文檔r.Header().Add("key", "value")是向 http 響應添加標頭的正確方法。我深入挖掘并找到了Header類型的定義。它是type Header map[string][]string。我在這里有點困惑。在這種情況下,您是否不必返回指針來修改具有的值ResponseWriter?如果是為什么?
1 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
那是因為映射和切片是引用類型??纯催@段代碼:
package main
import (
"fmt"
)
func main() {
m1 := make(map[string]string)
var m2 map[string]string
m1["one"] = "this is from m1"
m2 = m1
m2["two"] = "this is from m2"
fmt.Printf("%#v\n", m1)
}
輸出是:
map[string]string{"one":"this is from m1", "two":"this is from m2"}
這具有相同的結果:
package main
import (
"fmt"
)
type mymap map[string]string
func main() {
m1 := make(mymap)
var m2 mymap
m1["one"] = "this is from m1"
m2 = m1
m2["two"] = "this is from m2"
fmt.Printf("%#v\n", m1)
}
輸出:
main.mymap{"one":"this is from m1", "two":"this is from m2"}
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消