Код Go действует как сервер, и поскольку файл HTML запускается из браузера пользователя, вы не можете получить к нему доступ, не отправив его на сервер.В этом примере я буду использовать HTTP GET.
Предполагая, что ваш html-файл находится в разделе "/"
Сначала измените html-файл на использование формы GET:
<!DOCTYPE html>
<html>
<body>
<form action="/upload" method="get">
<select name="action" size="1" id="action-choice">
<option value="test">Test</option>
<option value="run">Run</option>
</select>
<input type="submit" value="Submit">
</form>
Теперь нам нужно перехватить этот GET-запрос в / upload (так как форма перенаправляет на / upload)
func upload(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
r.ParseForm()
w.Write([]byte(r.Form["action"][0]))
}
}
, чтобы мы могли суммироватьвсе это до следующего кода GO
package main
import (
"net/http"
"log"
)
var page = `<!DOCTYPE html>
<html>
<body>
<form action="/upload" method="get">
<select name="action" size="1" id="action-choice">
<option value="test">Test</option>
<option value="run">Run</option>
</select>
<input type="submit" value="Submit">
</form>`
func m(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(page))
}
func upload(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
r.ParseForm()
w.Write([]byte(r.Form["action"][0]))
}
}
func main() {
log.Println("started")
http.HandleFunc("/", m)
http.HandleFunc("/upload", upload)
log.Fatal(http.ListenAndServe(":8080", nil))
}