拜托,我搜索了很多,但是在找不到之后,我写的并不是说我没有尝试先搜索。无法得到正确的答案。我甚至试图检查Revel的功能,也无法从那里得到答案。
当我运行此程序时,我收到行
的错误./test.go:11: use of package http without selector
此错误指向我写下的行
*http
在struct
中令人困惑的部分是通过测试和点我甚至可以通过VIM自动完成。所以我不知道为什么会出错。它是否有点像
*(net/http)
或类似的东西?
package main
import (
"fmt"
"net/http"
)
type HandleHTTP struct {
*http
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Path is %s", r.URL.Path[1:])
}
func main() {
test := HandleHTTP{}
test.http.HandleFunc("/", handler)
test.http.ListenAndServe(":8080", nil)
}
答案 0 :(得分:4)
如果您希望从不同的端口提供两个或更多实例,则需要启动两个或更多服务器。也许这样的事情对你有用吗?
package main
import (
"fmt"
"net/http"
)
type HandleHTTP struct {
http *http.Server
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Path is %s", r.URL.Path[1:])
}
func main() {
mux1 := http.NewServeMux()
mux1.HandleFunc("/", handler)
test1 := HandleHTTP{http:&http.Server{Addr:":8081", Handler:mux1}}
mux2 := http.NewServeMux()
mux2.HandleFunc("/", handler)
test2 := HandleHTTP{http:&http.Server{Addr:":8082", Handler:mux2}}
// run the first one in a goroutine so that the second one is executed
go test1.http.ListenAndServe()
test2.http.ListenAndServe()
}