Тип url.Values
Тип url.Values представляет собой отображение
map[string][]string и используется для работы с
параметрами запроса и данными форм. Он предоставляет удобные
методы для получения, установки и добавления значений.
Основное преимущество этого типа - поддержка множественных
значений для одного ключа.
Создание url.Values
Давайте создадим экземпляр url.Values с помощью
функции url.ParseQuery или напрямую:
package main
import (
"fmt"
"net/url"
)
func main() {
params := url.Values{}
params.Set("name", "john")
params.Add("age", "25")
params.Add("hobby", "reading")
params.Add("hobby", "swimming")
fmt.Println(params)
}
Результат выполнения кода:
map[age:[25] hobby:[reading swimming] name:[john]]
Метод Get
Метод Get возвращает первое значение для указанного
ключа. Если ключ отсутствует, возвращается пустая строка:
package main
import (
"fmt"
"net/url"
)
func main() {
params := url.Values{}
params.Set("name", "john")
params.Add("hobby", "reading")
params.Add("hobby", "swimming")
res := params.Get("name")
fmt.Println(res)
}
Результат выполнения кода:
"john"
Метод Set
Метод Set устанавливает значение для указанного ключа,
заменяя все существующие значения. Если ключ отсутствовал,
он создается:
package main
import (
"fmt"
"net/url"
)
func main() {
params := url.Values{}
params.Set("name", "john")
params.Set("name", "jane")
res := params.Get("name")
fmt.Println(res)
}
Результат выполнения кода:
"jane"
Метод Add
Метод Add добавляет значение к существующему ключу,
сохраняя все предыдущие значения. Если ключ отсутствовал,
он создается:
package main
import (
"fmt"
"net/url"
)
func main() {
params := url.Values{}
params.Add("hobby", "reading")
params.Add("hobby", "swimming")
params.Add("hobby", "gaming")
res := params["hobby"]
fmt.Println(res)
}
Результат выполнения кода:
[reading swimming gaming]
Метод Encode
Метод Encode преобразует параметры в строку
запроса для использования в URL-адресах. Значения
кодируются в соответствии с правилами URL:
package main
import (
"fmt"
"net/url"
)
func main() {
params := url.Values{}
params.Set("name", "john doe")
params.Add("age", "25")
params.Add("hobby", "reading books")
res := params.Encode()
fmt.Println(res)
}
Результат выполнения кода:
"age=25&hobby=reading+books&name=john+doe"
Метод ParseQuery
Функция ParseQuery парсит строку запроса и
возвращает url.Values. Это удобный способ
преобразовать URL-строку в структурированные данные:
package main
import (
"fmt"
"net/url"
)
func main() {
query := "name=jane&age=30&hobby=music&hobby=travel"
params, err := url.ParseQuery(query)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(params)
}
Результат выполнения кода:
map[age:[30] hobby:[music travel] name:[jane]]
Смотрите также
-
тип
url.URL,
который представляет собой парсированный URL-адрес -
функцию
url.Parse,
которая парсирует URL-строку в структуру url.URL -
функцию
url.QueryEscape,
которая кодирует строку для использования в URL-запросах -
функцию
url.QueryUnescape,
которая декодирует URL-закодированную строку