package main
import (
"fmt"
"net"
)
func main() {
// Get all network interfaces
interfaces, err := net.Interfaces()
if err != nil {
panic(err)
}
for _, interf := range interfaces {
// Resolve addresses
// for each interface
addrs, err := interf.Addrs()
if err != nil {
panic(err)
}
fmt.Println(interf.Name)
for _, add := range addrs {
if ip, ok := add.(*net.IPNet); ok {
fmt.Printf(" %v
", ip)
}
}
}
}
/*
lo0
127.0.0.1/8
::1/128
fe80::1/64
gif0
stf0
XHC1
XHC0
XHC20
en0
fe80::10b1:cc67:c791:622c/64
192.168.43.123/24
p2p0
awdl0
fe80::e43d:58ff:fe1f:cb20/64
en3
en1
en4
en2
bridge0
en5
fe80::aede:48ff:fe00:1122/64
utun0
fe80::8e9a:3220:c480:3ae6/64
*/