Алгоритм у вас будет примерно таким...
При нажатии на кнопку у вас будет вызвана функция (обработчик события onClick у кнопки).
В этой функции вы сделаете AJAX запрос по протоколу HTTP на ваш сервер, где запущено ваше ПО на Go.
В main.go вы запускаете HTTP сервер, который примет запрос от вашей функции JavaScript, обработает его и ответит.
Разберём самый простой вариант с методом GET, чтобы вам было проще тестировать.
На сервере (своём компьютере) запускаете main.go примерно такого содержания
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "hello\n")
}
func main() {
http.HandleFunc("/hello", helloHandler)
http.ListenAndServe(":8081", nil)
}
Этот сервис будет слушать порт 8081 любого IP адреса на сервере, где будет запущен.
Предположим, что вы тестируете на своём компьютере, в этом случае для проверки вам нужно в браузере откройте url `
127.0.0.1:8081/hello`
После этого вы должны увидеть в ответе просто текст: "hello".
Когда этот этап будет завершен - вы сможете перейти к вызову этого URL уже из JavaScript.
Для этого можете использовать то, что вам привычнее, если такого нет - можете воспользоваться этим примером
const req = new XMLHttpRequest();
const url='http://127.0.0.1:8081/hello';
req.open("GET", url);
req.send();
req.onreadystatechange=(e)=>{
console.log(req.responseText)
}
PS: Если не понятно или что-то не получится - пишите, помогу разобраться.