使用随机端口
有时候我们需要使用随机端口.
我们直接使用 :0
端口即可, 操作系统会自动分配一个大于 1024 的可用端口给你.
// main.go
package main
import (
"fmt"
"net"
"net/http"
)
func main() {
l, err := net.Listen("tcp", ":0")
if err != nil {
panic(err)
}
fmt.Println("listening on", l.Addr().String()) // 地址(含端口)
fmt.Println("using port", l.Addr().(*net.TCPAddr).Port) // 端口
err = http.Serve(l, nil)
if err != nil {
panic(err)
}
}
执行 go run main.go
命令运行后, 不出意外的话会输出(端口会随机):
listening on [::]:3311
using prot 3311
这样我们在写一些 tcp/http
之类的服务时就不用为想一个端口号费心费力了.
多服务 + 随机端口 + 服务注册使用更佳.