A Tour of Go部分练习
2024-01-07 22:14:09
文章目录
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
文章来源:https://blog.csdn.net/ppdouble/article/details/135411168
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!