import ( "net" ) // LocalIPs return all non-loopback IPv4 addresses func LocalIPv4s() ([]string, error) { var ips []string addrs, err := net.InterfaceAddrs() if err != nil { return ips, err } for _, a := range addrs { if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil { ips = append(ips, ipnet.IP.String()) } } return ips, nil } // GetIPv4ByInterface return IPv4 address from a specific interface IPv4 addresses func GetIPv4ByInterface(name string) ([]string, error) { var ips []string iface, err := net.InterfaceByName(name) if err != nil { return nil, err } addrs, err := iface.Addrs() if err != nil { return nil, err } for _, a := range addrs { if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil { ips = append(ips, ipnet.IP.String()) } } return ips, nil }