A Tour of Go部分练习

文章目录

Reader 练习

https://golang.google.cn/tour/methods/22

实现io.Reader接口

package main

import (
	//"golang.org/x/tour/reader"
	"fmt"
	"strings"
)

type MyReader struct{
   }

// TODO: Add a Read([]byte) (int, error) method to MyReader.

type ErrEmptyBuffer []byte

func (b ErrEmptyBuffer) Error() string {
   
	return fmt.Sprintf("cannot read empty buffer")
}

func (mr MyReader) Read (b []byte) (int, error) {
   
	fmt.Println("--- :", b)
	bLength := len(b)
	fmt.Println("+++ :", bLength)
	if bLength > 0 {
   
		for i := range b {
   
			b[i] = 'A'
		}
		fmt.Println("... :", b)

		return bLength, nil
	} else {
   
		return 0, ErrEmptyBuffer(b)
	}
}

func main() {
   
	//reader.Validate(MyReader{})
	r := MyReader{
   }
	str := strings.NewReader("Hello, Reader!")
	c := make([]byte, 8)
	str.Read(c)
	_, err := r.Read(c)
	fmt.Println("pppp :",err)

	d := make([]byte, 0)
	_, err2 := r.Read(d)
	fmt.Println("pppp :",err2)
}

输出

--- : [72 101 108 108 111 44 32 82]
+++ : 8
... : [65 65 65 65 65 65 65 65]
pppp : <nil>
--- : []
+++ : 0
pppp : cannot read empty buffer

相关推荐

  1. A Tour of Go部分练习

    2024-01-06 13:16:04       40 阅读
  2. 练习5-丢弃法(包含部分丢弃法理解)

    2024-01-06 13:16:04       17 阅读
  3. 练 习

    2024-01-06 13:16:04       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 13:16:04       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 13:16:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 13:16:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 13:16:04       18 阅读

热门阅读

  1. 设置模式:适配器模式

    2024-01-06 13:16:04       34 阅读
  2. Linux平台下gcc安装升级

    2024-01-06 13:16:04       44 阅读
  3. Kendo UI for Angular 学习笔记

    2024-01-06 13:16:04       42 阅读
  4. Redhat(liunx)连接虚拟机

    2024-01-06 13:16:04       23 阅读
  5. 阿里的通义灵码在android studio上的使用方法

    2024-01-06 13:16:04       52 阅读
  6. 07GoF之工厂模式

    2024-01-06 13:16:04       27 阅读
  7. K8S三种发布方式和声明式资源管理

    2024-01-06 13:16:04       32 阅读
  8. [原创][R语言]股票分析实战[8]:因子与subset的关系

    2024-01-06 13:16:04       30 阅读