我是全新的,我正在计划建立一个bittorent客户端作为我学习该语言的第一个项目。一个方面是bittorrent文件的经济和解码。我发现的一个示例创建了一个包含bufio.Reader的结构,然后使用一些接口添加其他方法。有人能解释构造这些接口的机制,以便重载结构吗?我不清楚如何将此文件中的函数添加到解码器结构(https://github.com/marksamman/bencode/blob/master/decoder.go)中:
package bencode
import (
"bufio"
"errors"
"io"
"strconv"
)
type decoder struct {
bufio.Reader
}
func (decoder *decoder) readDictionary() (map[string]interface{}, error) {
dict := make(map[string]interface{})
}
func (decoder *decoder) readString() (string, error) {
...
}
func (decoder *decoder) readList() ([]interface{}, error) {
...
}
func Decode(reader io.Reader) (map[string]interface{}, error) {
decoder := decoder{*bufio.NewReader(reader)}
if firstByte, err := decoder.ReadByte(); err != nil {
return make(map[string]interface{}), nil
} else if firstByte != 'd' {
return nil, errors.New("bencode data must begin with a dictionary")
}
return decoder.readDictionary()
}