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
相关推荐
多思考少编码3 小时前
【LGR-200-Div.4】洛谷入门赛 #27 A - H题解,包含(C++, Go语言)
开发语言·c++·golang·洛谷·算法竞赛
蒙娜丽宁3 小时前
深入理解Go语言中的接口定义与使用
开发语言·后端·golang·go
The Straggling Crow4 小时前
go 战略
开发语言·后端·golang
GoFly开发者7 小时前
GoFly快速开发框架/Go语言封装的图像相似性比较插件使用说明
开发语言·后端·golang
翔云1234568 小时前
Go语言的垃圾回收(GC)机制的迭代和优化历史
java·jvm·golang·gc
__AtYou__10 小时前
Golang | Leetcode Golang题解之第417题太平洋大西洋水流问题
leetcode·golang·题解
拉玛干10 小时前
社团周报系统可行性研究-web后端框架对比-springboot,django,gin
数据库·python·spring·golang
gopher951112 小时前
go语言 数组和切片
开发语言·golang
gopher951112 小时前
go语言Map详解
开发语言·golang
Python私教12 小时前
Go语言现代web开发15 Mutex 互斥锁
开发语言·前端·golang