Skip to content

Instantly share code, notes, and snippets.

@kemokemo
Last active January 18, 2023 08:00
Show Gist options
  • Save kemokemo/2d94e079dba5be3d73b482545296d6b3 to your computer and use it in GitHub Desktop.
Save kemokemo/2d94e079dba5be3d73b482545296d6b3 to your computer and use it in GitHub Desktop.
Get free port sample. Respect to https://github.com/phayes/freeport.
package main
import (
"fmt"
"net"
)
// GetFreePort returns the available port of the local environment.
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() {
freePort, err := GetFreePort()
if freePort != 0 {
fmt.Printf("%v", freePort)
} else {
fmt.Println("Free port is not available. Error is: ", err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment