Как выставлять куки в го?

В языке программирования Go выставление куки связано с использованием пакета "net/http". Для установки куки в Go можно использовать функцию "SetCookie" из этого пакета.

Прежде всего, необходимо импортировать пакет "net/http":

import (
    "net/http"
)

Затем можно использовать функцию "SetCookie" для установки куки. Она принимает три аргумента: объект "http.ResponseWriter", объект "http.Request" и экземпляр "http.Cookie" для представления куки. Пример:

func setCookieHandler(w http.ResponseWriter, r *http.Request) {
    cookie := &http.Cookie{
        Name:  "mycookie",
        Value: "example",
    }
    http.SetCookie(w, cookie)
}

В этом примере мы создаём новый объект "http.Cookie", устанавливаем ему имя и значение, а затем используем функцию "SetCookie" для добавления куки в ответ.

Теперь, когда пользователь запрашивает этот обработчик, кука "mycookie" с значением "example" будет установлена и отправлена в браузер пользователя.

Если вы хотите установить дополнительные параметры куки, такие как срок истечения действия, путь, домен или безопасность, можно задать их при создании объекта "http.Cookie". Пример:

func setCookieHandler(w http.ResponseWriter, r *http.Request) {
    cookie := &http.Cookie{
        Name:     "mycookie",
        Value:    "example",
        Expires:  time.Now().Add(24 * time.Hour),
        Path:     "/",
        Domain:   "example.com",
        Secure:   true,
        HttpOnly: true,
    }
    http.SetCookie(w, cookie)
}

В этом примере мы добавляем время истечения суток (с использованием пакета "time"), указываем путь и домен, устанавливаем безопасную передачу с использованием HTTPS, и устанавливаем атрибут HttpOnly для предотвращения доступа куки из JavaScript.

Наконец, если вы хотите удалить куки, то можно воспользоваться функцией "SetCookie" с передачей пустого значения и отрицательным сроком действия. Пример:

func deleteCookieHandler(w http.ResponseWriter, r *http.Request) {
    cookie := &http.Cookie{
        Name:    "mycookie",
        Value:   "",
        Expires: time.Now().Add(-1 * time.Hour),
    }
    http.SetCookie(w, cookie)
}

В этом примере мы устанавливаем куку с пустым значением, и указываем время истечения как прошедшее отрицательное значение, что заставляет браузер удалить куку.

Вот и всё! Это основы постановки куки в Go с помощью пакета "net/http". Вы можете дополнительно изучить документацию по пакету для более подробной информации и использования других возможностей.