应用场景
需要知道用户的IP地址来分析问题,用户不知道怎么操作,这个时候把编译好的ip.exe发给对方运行截屏即可
golang可以编译全平台(win/mac/linux)程序
运行效果(win10操作系统)
代码
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")
}
编译
go build -ldflags "-H windowsgui -s -w" main.go
会得到一个main.exe文件
将 main.exe 改名为 ip.exe 即可。