應用場景linux
無需各類繁瑣操做,直接雙擊打開go-ip.exe,便可看到本機網卡的所有IPgolang
golang能夠編譯全平臺(win/mac/linux)程序windows
運行效果(win10操做系統)app
代碼ui
package main // 獲取本機所有網卡的所有IP // 2020-03-12 16:52 import ( "fmt" "net" "fyne.io/fyne/app" "fyne.io/fyne/widget" ) //獲取所有網卡的所有IP func Ips() (map[string]string, error) { ips := make(map[string]string) //返回 interface 結構體對象的列表,包含了所有網卡信息 interfaces, err := net.Interfaces() if err != nil { return nil, err } //遍歷所有網卡 for _, i := range interfaces { // Addrs() 方法返回一個網卡上所有的IP列表 address, err := i.Addrs() if err != nil { return nil, err } //遍歷一個網卡上所有的IP列表,組合爲一個字符串,放入對應網卡名稱的map中 for _, v := range address { ips[i.Name] += v.String() + " " } } return ips, nil } func main() { var ips = make(map[string]string) ips, _ = Ips() var ipstring string //key是網卡名稱,value是網卡IP for k, v := range ips { ipstring += "adapter name: " + k + " IP: " + v + "\n" } //使用 fyne 畫到 GUI 界面上 myApp := app.New() myWindow := myApp.NewWindow("Network Info") myWindow.SetContent(widget.NewLabel(ipstring)) myWindow.Show() myApp.Run() tidyUp() } func tidyUp() { fmt.Println("Exited") }
編譯spa
go build -ldflags "-H windowsgui -s -w" main.go
會獲得一個main.exe文件操作系統
將 main.exe 更名爲 ip.exe 便可。3d