cpp

Тип Values: строка запроса

Тип Values из пакета net/url описывает словарь, ключами которого являются названия параметров, а значениями — строковые слайсы со значениями параметров из строки запроса. Объявление типа:

type Values map[string][]string

Пример:

// import "net/url"
m := url.Values{"x": {"5", "10"}, "c": {"а"}}
fmt.Println(m)          // map[c:[а] x:[5 10]]
fmt.Println(m.Encode()) // c=%D0%B0&x=5&x=10
for k, v := range m {
   fmt.Println(k, "=>", v)
}
// x => [5 10]
// c => [а]

Именно значение типа Values возвращает метод Query() структуры URL:

u, err := url.Parse(
              "http://localhost:80/index.php?x=5&c=%D0%B0#metka")
if err != nil {
   fmt.Println(err)
   return
}
m := u.Query()
fmt.Println(m)          // map[c:[а] x:[5]]
fmt.Println(m.Get("c")) // а
fmt.Println(m.Get("x")) // 5

Создать объект типа Values на основе строки запроса позволяет функция ParseQuery() из пакета net/url. Формат функции:

url.ParseQuery(query string) (url.Values, error)

Пример:

m, err := url.ParseQuery("x=5&x=10&c=%D0%B0")
if err != nil {
   fmt.Println(err)
   return
}
fmt.Println(m)          // map[c:[а] x:[5 10]]
fmt.Println(m.Get("c")) // а
fmt.Println(m.Get("x")) // 5

Тип Values содержит следующие методы:

  • Add() — добавляет новый элемент. Если ключ уже существует, то значение добавляется в слайс, а не заменяет существующее значение. Формат метода:
(url.Values).Add(key string, value string)

Пример:

m := url.Values{}
m.Add("x", "5")
m.Add("x", "10")
m.Add("c", "а")
fmt.Println(m)          // map[c:[а] x:[5 10]]
fmt.Println(m.Get("c")) // а
fmt.Println(m.Get("x")) // 5
  • Set() — добавляет новый элемент. Если ключ уже существует, то старое значение заменяется новым значением. Формат метода:
(url.Values).Set(key string, value string)

Пример:

m := url.Values{}
m.Add("x", "5")
m.Set("x", "10")
fmt.Println(m) // map[x:[10]]
  • Get() — возвращает первое значение по ключу. Если элемент с таким ключом не существует, то возвращается пустая строка. Формат метода:
(url.Values).Get(key string) string

Пример:

m := url.Values{}
m.Add("x", "5")
m.Add("x", "10")
fmt.Println(m["x"])            // [5 10]
fmt.Println(m.Get("x"))        // 5
fmt.Printf("%q\n", m.Get("y")) // ""
  • Has() — возвращает true, если элемент с указанным ключом существует, и false — в противном случае. Формат метода:
(url.Values).Has(key string) bool

Пример:

m := url.Values{}
m.Add("x", "5")
fmt.Println(m.Has("x")) // true
fmt.Println(m.Has("y")) // false
  • Del() — удаляет элемент с указанным ключом. Формат метода:
(url.Values).Del(key string)

Пример:

m := url.Values{}
m.Add("x", "5")
fmt.Println(m) // map[x:[5]]
m.Del("x")
fmt.Println(m) // map[]
  • Encode() — возвращает готовую строку запроса. Формат метода:
(url.Values).Encode() string

Пример:

m := url.Values{}
m.Add("x", "5")
m.Add("s", "строка")
fmt.Println(m.Encode())
// s=%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0&x=5

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp