go言語で自分のlocalIPを取得する

はじめに

dockerコンテナでgoのプログラムを動かしていると、コンテナのIPをどのように取得すればよいか困ったのでその対処を紹介。

コード

package main

import (
	"fmt"
	"net"
)

func main() {

	netInterfaceAddresses, _ := net.InterfaceAddrs()

	for _, netInterfaceAddress := range netInterfaceAddresses {

		networkIp, ok := netInterfaceAddress.(*net.IPNet)

		if ok && !networkIp.IP.IsLoopback() && networkIp.IP.To4() != nil {

			ip := networkIp.IP.String()

			fmt.Println("Resolved Host IP: " + ip)

		}
	}
}

解説

至ってシンプル。 “` net.InterfaceAddrs() “` でIPを取得することが可能だ。

127.0.0.1 で表現できない時など、テストコードなどで活躍しそう。