亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中返回一個值而不是一個指針

在 Go 中返回一個值而不是一個指針

Go
森欄 2022-01-04 15:43:52
在 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"}


查看完整回答
反對 回復 2022-01-04
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號