1. ホーム
  2. go

[解決済み] Go でローカル IP アドレスを取得するにはどうしたらいいですか?

2023-05-19 14:54:06

質問

コンピュータのIPアドレスを取得したい。以下のコードを使用しましたが、返されるのは 127.0.0.1 .

というように、IPアドレスを取得したい。 10.32.10.111 のようなIPアドレスを取得したいのですが、ループバックアドレスではありません。

name, err := os.Hostname()
if err != nil {
     fmt.Printf("Oops: %v\n", err)
     return
}

addrs, err := net.LookupHost(name)
if err != nil {
    fmt.Printf("Oops: %v\n", err)
    return
}

for _, a := range addrs {
    fmt.Println(a)
}  

どのように解決するのですか?

すべてのネットワーク インターフェースをループする必要があります。

ifaces, err := net.Interfaces()
// handle err
for _, i := range ifaces {
    addrs, err := i.Addrs()
    // handle err
    for _, addr := range addrs {
        var ip net.IP
        switch v := addr.(type) {
        case *net.IPNet:
                ip = v.IP
        case *net.IPAddr:
                ip = v.IP
        }
        // process IP address
    }
}

遊ぶ (util/helper.goから引用)