getFreePort.go
package main
import (
"log"
"net"
)
// 取得一个未被占用的随机端口
func GetFreePort() (int, error) {
addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
if err != nil {
return 0, err
}
l, err := net.ListenTCP("tcp", addr)
if err != nil {
return 0, err
}
defer l.Close()
return l.Addr().(*net.TCPAddr).Port, nil
}
func main() {
port, _ := GetFreePort()
log.Println(port)
}