我按照Go文档中的示例进行操作,并为Go服务器编译了此代码:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
但是当我访问时 localhost:8080它没有显示任何内容。
答案 0 :(得分:3)
更改http.ListenAndServe(":8080", nil)
到
if err := http.ListenAndServe("localhost:8080", nil); err != nil {
log.Fatal("ListenAndServe: ", err)
}
这将强制服务器仅侦听localhost
接口,并且您不会遇到权限和防火墙规则问题。它还会记录您可能遇到的任何错误。
答案 1 :(得分:-1)
在linux中你需要获得运行程序的权限,因为它需要在8080端口上侦听。
我正在使用Ubuntu,我运行go build -o main
,然后运行sudo ./main
,当我访问localhost时:8080显示Hi there, I love !