如何检索当前机器的地址?

rin*_*ino 5 go

以下获取本地 IP 地址:

package main

import (
    "fmt"
    "net"
)

func main() {
    a, _ := net.LookupHost("localhost")
    fmt.Printf("Addresses: %#+v\n",a)
}
Run Code Online (Sandbox Code Playgroud)

这是您通常获取本地 IP 地址并根据需要手动过滤切片的方式吗?

pho*_*zed 4

以下是对最初由 Russ Cox 发布到 golang-nuts google group 的代码片段的快速而肮脏的修改:

package main

import (
  "fmt" 
  "net" 
  "os"  
)

func main() {
  tt, err := net.Interfaces()
  if err != nil { 
    panic(err)  
  }     
  for _, t := range tt {
    aa, err := t.Addrs()
    if err != nil {
      panic(err)        
    }           
    for _, a := range aa {
      ipnet, ok := a.(*net.IPNet) 
      if !ok {          
        continue                
      }                 
      v4 := ipnet.IP.To4() 
      if v4 == nil || v4[0] == 127 { // loopback address
        continue                
      }                 
      fmt.Printf("%v\n", v4)
    }           
    os.Exit(0)  
  }     
  os.Exit(1)

}
Run Code Online (Sandbox Code Playgroud)

  • 我想说这个链接(也来自该讨论线程)具有更短、更清晰的代码来执行此操作:https://github.com/mccoyst/myip/blob/master/myip.go (4认同)