Некоторые сетевые протоколы позволяют создавать прослушиватель, который прослушивает случайный адрес.Это обычно используется, когда вы хотите запустить несколько экземпляров вашей службы одновременно, и, таким образом, вы не можете заставить их всех слушать один и тот же адрес.В этих случаях ядро найдет тот, который доступен, и поместит туда ваш слушатель.Но когда у вас есть случайный адрес, вам нужно знать, что это за адрес, чтобы вы могли его рекламировать.
Например, для TCP и UDP вы можете указать 0
в качестве номера порта:
package main
import (
"fmt"
"net"
)
func main() {
l, _ := net.Listen("tcp4", ":0")
fmt.Printf("Addr: %s\n", l.Addr())
}
Результат примерно такой:
Addr: 0.0.0.0:37733