GO 获取内网 IP

可以通过 net.InterfaceAddrs() 来获取内网相关数据,从而获得内网 IP :

package main

import (
	"fmt"
	"net"
	"os"
)

// 获取内网 IP
func GetIntranetIp() string {
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	IntranetIp := ""
	for _, address := range addrs {
		// 检查ip地址判断是否回环地址
		if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
			if ipnet.IP.To4() != nil {
				IntranetIp = ipnet.IP.String()
				break
			}
		}
	}
	return IntranetIp
}

func main() {
	ip := GetIntranetIp()
	fmt.Printf("ip: %v\n", ip)
}