在学习go过程中,有个练习题,要求产生一格ASCII字符A的无限流
按照提示写了一下代码:
package main
import "golang.org/x/tour/reader"
type MyReader struct{}
// TODO: 给 MyReader 添加一个 Read([]byte) (int, error) 方法
func (r MyReader) Read(b []byte) (int, error) {
b[0] = "A" // 注意此处,应为:b[0] = 'A'
return 1, nil
}
func main() {
reader.Validate(MyReader{})
}
运行报错:
go: finding module for package golang.org/x/tour/reader
go: downloading golang.org/x/tour v0.1.0
./prog.go:10:10: cannot use "A" (untyped string constant) as byte value in assignment
Read方法里面的A应用单引号,而非双引号
byte
占1个字节8个比特位(本质与uint8相同),使用单引号
var a byte = 'A'
rune
占4个字节32比特位(本质与int32相同),用于处理中文、日文或者其他复合字符,使用单引号
var b rune = 'B'