28 lines
471 B
Go
28 lines
471 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func createListener() (l net.Listener, close func()) {
|
||
|
l, err := net.Listen("tcp", ":0")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return l, func() {
|
||
|
_ = l.Close()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
l, closer := createListener()
|
||
|
defer closer()
|
||
|
http.Handle("/", http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
||
|
// handle like normal
|
||
|
}))
|
||
|
log.Println("listening at", l.Addr().(*net.TCPAddr).Port)
|
||
|
http.Serve(l, nil)
|
||
|
}
|