github.com/iikira/iikira-go-utils@v0.0.0-20230610031953-f2cb11cde33a/utils/addr.go (about) 1 package utils 2 3 import ( 4 "net" 5 ) 6 7 // ListAddresses 列出本地可用的 IP 地址 8 func ListAddresses() (addresses []string) { 9 iFaces, _ := net.Interfaces() 10 addresses = make([]string, 0, len(iFaces)) 11 for k := range iFaces { 12 iFaceAddrs, _ := iFaces[k].Addrs() 13 for l := range iFaceAddrs { 14 switch v := iFaceAddrs[l].(type) { 15 case *net.IPNet: 16 addresses = append(addresses, v.IP.String()) 17 case *net.IPAddr: 18 addresses = append(addresses, v.IP.String()) 19 } 20 } 21 } 22 return 23 } 24 25 // ParseHost 解析地址中的host 26 func ParseHost(address string) string { 27 h, _, err := net.SplitHostPort(address) 28 if err != nil { 29 return address 30 } 31 return h 32 }