package net

import (
	"log"
	"net"
)

func GetLocalIP4() []string {
	ifaces, err := net.Interfaces()
	if err != nil {
		log.Panic(err)
	}
	// handle err
	r := []string{}
	for _, i := range ifaces {
		addrs, err := i.Addrs()
		if err != nil {
			log.Panic(err)
		}
		// 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
			}
			if trueIP := ip.To4(); !ip.IsLoopback() && trueIP != nil {
				r = append(r, trueIP.String())
			}
		}
	}
	return r
}
