CookieにはMaxAgeという、有効期限を秒数で指定する属性があります。
Goでは、このMaxAgeにマイナス値か0を設定することで、対象のCookieを削除することができます。
func main() {
...
http.HandleFunc("/delete", delete) // 「/delete」にアクセスしたらdeleteを実行
http.Handle("/favicon.ico", http.NotFoundHandler())
http.ListenAndServe(":8080", nil)
}
func delete(w http.ResponseWriter, req *http.Request) {
c, err := req.Cookie("test") // クライアントから送信されたCookieを格納
if err == http.ErrNoCookie {
http.Redirect(w, req, "/set", http.StatusBadRequest)
}
c.MaxAge = -1 // 格納した変数cのMaxAgeフィールドに-1を指定
http.SetCookie(w, c) // 変更を反映するためにcをCookieにセット
http.Redirect(w, req, "/index", http.StatusSeeOther)
}