#http #go
#http #Вперед
Вопрос:
У меня есть следующий умопомрачительно простой код Go.
package main
import (
"fmt"
"net/http"
)
func main() {
h := http.Header{
"my_id": []string{"XYZ"},
}
fmt.Println("h.Get("my_id") = ", h.Get("my_id"))
}
Но когда я запускаю его, он работает не так, как ожидалось, вот результат:
h.Get("my_id") =
Почему я не могу распечатать значение заголовка, которое я только что установил?
Вот живой код, который вы можете увидеть сами: https://play.golang.org/p/L45LzVqd341
Ответ №1:
Header.Get
используется http.CanonicalHeaderKey
для поиска ключей. Если вы используете h.Set
или помещаете My_id
, это будет работать.
Это объясняется в Header.Get
документации.
Ответ №2:
Да, заголовки — это просто map[string][]string
. Таким образом, вы всегда можете получить к ним доступ, просто
if myID, ok := h["my_id"]; ok {
fmt.Println("myID", myID)
} else {
fmt.Println("my_id header not found")
}