code: func DecodeList(data []byte, start int) (
  	result interface{}, index int, err error) {
  
  	if start >= len(data) || data[start] != 'l' {
  		err = errors.New("invalid list bencode")
  		return
  	}
  
  	var item interface{}
  	r := make([]interface{}, 0, 8)
  
  	index = start + 1
  	for index < len(data) {
  		char, _ := utf8.DecodeRune(data[index:])
  		if char == 'e' {
  			break
  		}
  
  		item, index, err = decodeItem(data, index)
  		if err != nil {
  			return
  		}
  		r = append(r, item)
  	}
  
  	if index == len(data) {
  		err = errors.New("'e' not found when decode list")
  		return
  	}
  	index++
  
  	result = r
  	return
  }
docs: // DecodeList decodes a list value.