主机地址是网络通信最重要的数据之一,net 包中定义了三种类型的主机地址数据类型:IP、IPMask 和 IPAddr,它们分别用来存储协议相关的网络地址。

IP 地址类型

在 net 包中,IP 地址类型被定义成一个 byte 型数组,即若干个 8 位组,格式如下:

type IP []byte

在 net 包中,有几个函数可以将 IP 地址类型作为函数的返回类型,比如 ParseIP() 函数,该函数原型定义如下:

func ParseIP(s string) IP

ParseIP() 函数的主要作用是分析 IP 地址的合法性,如果是一个合法的 IP 地址,ParseIP() 函数将返回一个 IP 地址对象。如果是一个非法 IP 地址,ParseIP() 函数将返回 nil。

还可以使用 IP 对象的 String() 方法将 IP 地址转换成字符串格式,String() 方法的原型定义如下:

func (ip IP) String() string

如果是 IPv4 地址,String() 方法将返回一个点分十进制格式的 IP 地址,如“192.168.0.1”。如果是 IPv6 地址,String() 方法将返回使用“:”分隔的地址形式,如“2000:0:0:0:0:0:0:1”。另外注意一个特例,对于地址“0:0:0:0:0:0:0:1”的返回结果是省略格式“::1”。

【示例 1】IP 地址类型。

import(

"fmt"

"net"

"os"

)

func mai