A Tour of Go部分练习

文章目录

    • [Reader 练习](#Reader 练习)

Reader 练习

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

实现io.Reader接口

go 复制代码
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)
}

输出

text 复制代码
--- : [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
相关推荐
风无雨2 小时前
GO启动一个视频下载接口 前端可以边下边放
前端·golang·音视频
LuckyLay21 小时前
使用 Docker 搭建 Go Web 应用开发环境——AI教你学Docker
前端·docker·golang
{⌐■_■}1 天前
【软件工程】tob和toc含义理解
前端·数据库·mysql·golang·软件工程·tidb
hackchen2 天前
Go与JS无缝协作:Goja引擎实战之错误处理最佳实践
开发语言·javascript·golang
争不过朝夕,又念着往昔2 天前
Go语言反射机制详解
开发语言·后端·golang
Jerry Lau2 天前
go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南
前端·golang·gin
witton2 天前
Go语言网络游戏服务器模块化编程
服务器·开发语言·游戏·golang·origin·模块化·耦合
叹一曲当时只道是寻常2 天前
Softhub软件下载站实战开发(十六):仪表盘前端设计与实现
前端·golang
Jerry Lau2 天前
go go go 出发咯 - go web开发入门系列(一) helloworld
开发语言·前端·golang
天下一般2 天前
go入门 - day1 - 环境搭建
开发语言·后端·golang