接口和重载结构?

时间:2016-07-07 05:25:12

标签: go interface

我是全新的,我正在计划建立一个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()
}

0 个答案:

没有答案