文章目录
- 使用栗子
- 源码
- 用法
使用栗子
conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
// handle error
}
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
status, err := bufio.NewReader(conn).ReadString('\n')
// ...
源码
net.Dial
的源码
// net.Dial函数解读
// 实际是对Dialer.Dial的一个封装, 封装后,可以直接调用Dial拨号,而不需要再去定义一个Dialer结构体对象,利用对象拨号,省去了定义结构体对象,封装时用的同名方法,便于记忆
func Dial(network, address string) (Conn, error) {
var d Dialer // 定义了一个 Dialer结构体对象,使用该对象的Dial方法去拨号,所以net.Dial 实际是对Dialer.Dial的一个封装
return d.Dial(network, address)
}
用法
总之,dial 只是做了一些预设置,并且返回了一个连接对象。
在网络network上连接地址address,并返回一个Conn接口。
可用的网络类型: “tcp”、“tcp4”、“tcp6”、“udp”、“udp4”、“udp6”、“ip”、“ip4”、“ip6”、“unix”、“unixgram”、“unixpacket”
https://www.apiref.com/go-zh/net.htm#Dial