1package test23import (4 "net"5 "sync"6)78var (9 used = map[int]struct{}{}10 lock sync.Mutex11)1213// RandomPort returns a random port number.14// This is mainly used for testing.15func RandomPort() int {16 addr, _ := net.Listen("tcp", ":0") //nolint:gosec17 _ = addr.Close()18 port := addr.Addr().(*net.TCPAddr).Port19 lock.Lock()2021 if _, ok := used[port]; ok {22 lock.Unlock()23 return RandomPort()24 }2526 used[port] = struct{}{}27 lock.Unlock()28 return port29}