背景
在某些场景下,需要机器的host名和ip,特此记录一下golang的写法
show code
package utility
import (
"fmt"
"net"
"os"
)
func GeLocalIP() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println("get net interface address failed, err = ", err.Error())
return ""
}
for _, addr := range addrs {
if ip, ok := addr.(*net.IPNet); ok && !ip.IP.IsLoopback() {
if ip.IP.To4() != nil {
return ip.IP.String()
}
}
}
return ""
}
func GetHostname() string {
hostname, err := os.Hostname()
if err != nil {
fmt.Println("get hostname failed, err = ", err.Error())
return ""
}
return hostname
}
func GetIP() {
conn, error := net.Dial("udp", "8.8.8.8:80")
if error != nil {
fmt.Println(error)
}
defer conn.Close()
ipAddress := conn.LocalAddr().(*net.UDPAddr)
fmt.Println("get ip", ipAddress)
}