微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Go 学习笔记79— Go 标准库 net获取本机IP地址

1. 获取本机 IP 地址

package main

import (
	"fmt"
	"net"
)

// 获取本机网卡IP
func getLocalIP() (ipv4 string, err error) {
	// var (
	// 	addrs []net.Addr
	// 	addr net.Addr
	// 	ipNet *net.IPNet // IP地址
	// 	isIpNet bool
	// )
	// 获取所有网卡
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return
	}
	// 取第一个非lo的网卡IP
	for _, addr := range addrs {
		// 这个网络地址是IP地址: ipv4, ipv6
		ipNet, isIpNet := addr.(*net.IPNet)
		if isIpNet && !ipNet.IP.IsLoopback() {
			// 跳过IPV6
			if ipNet.IP.To4() != nil {
				ipv4 = ipNet.IP.String() // 192.168.1.1
				return
			}
		}
	}

	return
}

func main() {
	ipv4, _ := getLocalIP()
	fmt.Printf("ipv4 is <%s>", ipv4)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐