golang 读取本机ip

发布时间:2024-07-05 00:12:52

在Go语言中,我们可以使用net包来读取本机IP地址。这个操作相对简单,让我们来看一下具体的实现过程。

1. 使用net包获取IP地址

首先,我们需要导入net包:

import "net"

接下来,我们可以通过调用net包中的函数来获取本机IP地址:

addrs, err := net.InterfaceAddrs()

这个函数会返回一个net.Addr对象的列表。我们可以遍历这个列表,找到合适的IP地址。

2. 遍历net.Addr列表

对于每个net.Addr对象,我们可以通过类型断言将其转换为*net.IPNet类型。这个类型表示一个IP地址及其掩码位数。

for _, addr := range addrs { // 判断是否是IPNet类型 if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { // 获取IPv4地址 if ipNet.IP.To4() != nil { // 处理IPv4地址 fmt.Println("IPv4: ", ipNet.IP.String()) } // 获取IPv6地址 if ipNet.IP.To16() != nil { // 处理IPv6地址 fmt.Println("IPv6: ", ipNet.IP.String()) } } }

注意,我们需要排除掉回环地址(Loopback)。

3. 完整的代码

下面是完整的示例代码:

package main import ( "fmt" "net" ) func main() { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println("获取IP地址失败:", err) return } for _, addr := range addrs { if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { fmt.Println("IPv4: ", ipNet.IP.String()) } if ipNet.IP.To16() != nil { fmt.Println("IPv6: ", ipNet.IP.String()) } } } }

运行这段代码,我们就可以在控制台看到本机的IP地址。

通过以上三个步骤,我们就可以在Go语言中读取本机IP地址了。这个过程相对简单,只需要导入net包,调用相应的函数,并进行一些判断和处理即可。希望这篇文章能够帮助到你。

相关推荐