Go言語でプロセスのポートを取得する方法は何ですか?
Go言語では、netパッケージのListen()関数を使用してプロセスがリッスンしているポートを取得することができます。以下に示すのはサンプルコードです:
package main
import (
"fmt"
"net"
)
func main() {
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
fmt.Println("Failed to listen:", err)
return
}
defer listener.Close()
address := listener.Addr().(*net.TCPAddr)
fmt.Println("Listening on port", address.Port)
}
コード上で、127.0.0.1:0をパラメーターとして渡すことで、オペレーティングシステムが私たちのために空いているポートを選択することができます。次に、listener.Addr()メソッドを使って、実際にリッスンされているアドレスを取得し、address.Portを使ってリッスンしているポート番号を取得できます。