github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/f/net.go (about) 1 package f 2 3 import ( 4 "log" 5 "net" 6 "strings" 7 ) 8 9 // IP get internal IPs. 10 func IP(prefixList ...string) (ip []string) { 11 adders, err := net.InterfaceAddrs() 12 if err != nil { 13 log.Fatal("Oops: " + err.Error()) 14 } 15 16 i := len(prefixList) 17 for _, addr := range adders { 18 if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { 19 if ipNet.IP.To4() != nil { 20 s := ipNet.IP.String() 21 if i == 0 { 22 ip = append(ip, s) 23 continue 24 } 25 for _, prefix := range prefixList { 26 if strings.HasPrefix(s, prefix) { 27 ip = append(ip, s) 28 } 29 } 30 } 31 } 32 } 33 return 34 }