A small Go function which will return an available port number. The technique is to setup a server bound to port 0, get the port number, then shutdown the server. Not a perfect technique as there’s a tiny race condition between shutting the server down and using the port, but good enough for what I need it for.

func randomlyAllocatePort() (port int, _ error) {  
    listener, err := net.Listen("tcp", ":0")  
    if err != nil {  
       return 0, err
    }  
  
    port = listener.Addr().(*net.TCPAddr).Port  
    if err := listener.Close(); err != nil {  
       return 0, err
    }  
  
    return port, nil
}

Source: Yellow Duck, with some modifications.