Метод url.Values.Add

Метод url.Values.Add добавляет значение в карту параметров запроса. Первым параметром принимает ключ (строку), вторым — значение (строку). Если ключ уже существует, метод добавляет новое значение в существующий список, не удаляя старые. Это отличает его от метода url.Values.Set, который заменяет все значения на одно.

Синтаксис

govalues.Add(key, value)

Пример

Давайте добавим один параметр в пустую карту:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  v := url.Values{}
  v.Add("name", "john")
  fmt.Println(v.Encode())
}

Результат выполнения кода:

go"name=john"

Пример

Теперь добавим два значения для одного ключа:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  v := url.Values{}
  v.Add("colors", "red")
  v.Add("colors", "blue")
  fmt.Println(v.Encode())
}

Результат выполнения кода:

go"colors=red&colors=blue"

Пример

Добавим параметры к уже существующим значениям из готовой карты:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  v := url.Values{}
  v.Set("name", "alice")
  v.Add("name", "bob")
  v.Add("age", "30")
  fmt.Println(v.Encode())
}

Результат выполнения кода:

go"age=30&name=alice&name=bob"

Пример

Используем метод url.Values.Add вместе с парсингом URL:

gopackage main

import (
  "fmt"
  "net/url"
)

func main() {
  u, err := url.Parse("https://example.com?page=1")
  if err != nil {
    panic(err)
  }
  params := u.Query()
  params.Add("sort", "asc")
  params.Add("page", "2")
  u.RawQuery = params.Encode()
  fmt.Println(u.String())
}

Результат выполнения кода:

go"https://example.com?page=1&page=2&sort=asc"

Смотрите также

  • метод url.Values.Set,
    который устанавливает значение для ключа, заменяя все существующие
  • метод url.Values.Get,
    который возвращает первое значение для заданного ключа
  • метод url.Values.Encode,
    который кодирует карту параметров в строку запроса
  • функцию url.Parse,
    которая разбирает URL-строку на составляющие