面试题答案
一键面试-
设计新的自定义类型:
type ReadWriter interface { Reader Writer }
这里通过在
ReadWriter
接口中嵌套Reader
和Writer
接口,使得ReadWriter
接口同时具备Read
和Write
方法。 -
应用场景:
- 网络通信:在实现网络套接字(socket)通信时,一个连接通常需要既能读取数据(接收来自对方的数据),又能写入数据(向对方发送数据)。可以定义一个实现了
ReadWriter
接口的NetConn
结构体,这样在处理网络连接的代码中,就可以统一使用ReadWriter
接口来进行读写操作,使得代码逻辑更加清晰和统一。例如在 Go 语言标准库的net
包中,net.Conn
接口就类似这样的设计,它既可以读数据(Read
方法)也可以写数据(Write
方法)。 - 文件操作:当对文件进行操作时,有些场景需要既读取文件内容,又向文件写入内容。比如日志文件,可能需要先读取已有日志内容做一些分析,然后再写入新的日志。定义一个实现
ReadWriter
接口的FileOp
结构体,在文件操作相关的函数中使用ReadWriter
接口,可以方便地对文件进行读写操作。在 Go 语言标准库的os
包中,os.File
结构体实现了io.Reader
和io.Writer
接口,就类似于这种接口嵌套的应用,使得os.File
类型既能读又能写文件。
- 网络通信:在实现网络套接字(socket)通信时,一个连接通常需要既能读取数据(接收来自对方的数据),又能写入数据(向对方发送数据)。可以定义一个实现了