РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1122 of 1593 menu

Метод url.Values.Encode

Метод url.Values.Encode кодирует коллекцию параметров в строку, пригодную для использования в URL или в теле HTTP-запроса. В первый аргумент метод не принимает параметров, он действует на приемнике типа url.Values. Результат - строка, в которой ключи и значения отсортированы по ключам, а каждый параметр закодирован в формате "ключ=значение". Специальные символы, такие как пробелы, символы пунктуации и не-ASCII символы, заменяются на корректные URL-коды (процентное кодирование).

Стоит отметить, что в отличие от ручного конструирования строк, этот метод гарантирует корректное кодирование, а также автоматически обрабатывает мульти-значения для одного ключа, повторяя ключ для каждого значения.

Синтаксис

func (v Values) Encode() string

Пример

Давайте создадим коллекцию параметров с несколькими ключами и значениями, после чего закодируем ее в строку запроса:

package main import ( "fmt" "net/url" ) func main() { params := url.Values{} params.Set("name", "John Doe") params.Add("age", "30") params.Add("city", "New York") res := params.Encode() fmt.Println(res) }

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

"age=30&city=New+York&name=John+Doe"

Обратите внимание, что ключи были отсортированы в алфавитном порядке, а пробелы закодированы как +.

Пример

Рассмотрим случай, когда для одного ключа указано несколько значений. Метод Encode корректно обработает их, повторив ключ в строке запроса для каждого значения:

package main import ( "fmt" "net/url" ) func main() { params := url.Values{} params.Add("colors", "red") params.Add("colors", "green") params.Add("colors", "blue") params.Set("mode", "list") res := params.Encode() fmt.Println(res) }

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

"colors=blue&colors=green&colors=red&mode=list"

В данном примере ключ colors повторен три раза, каждому значению соответствует отдельная пара "ключ=значение". Значения при этом были отсортированы, а не сохранены в порядке добавления.

Пример

Метод также полезен для работы с не-ASCII символами или специальными знаками в значениях параметров. Он самостоятельно применит процентное кодирование:

package main import ( "fmt" "net/url" ) func main() { params := url.Values{} params.Set("q", "golang & web") params.Add("page", "1") params.Add("filter", "price>100") res := params.Encode() fmt.Println(res) }

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

"filter=price%3E100&page=1&q=golang+%26+web"

Символ > заменен на %3E, а & на %26, что предотвращает неверный парсинг строки как разделителя параметров.

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

  • метод url.Values.Get,
    который получает первое значение для указанного ключа
  • метод url.Values.Set,
    который устанавливает значение для ключа, заменяя существующие
  • метод url.Values.Add,
    который добавляет новое значение к ключу, сохраняя предыдущие
  • функцию url.QueryEscape,
    которая кодирует отдельную строку в формат URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить