Golang - 没有选择器的包的用户

时间:2017-03-18 20:37:55

标签: go

拜托,我搜索了很多,但是在找不到之后,我写的并不是说我没有尝试先搜索。无法得到正确的答案。我甚至试图检查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)

}

1 个答案:

答案 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()

}