golang单引号和双引号的区别

在学习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应用单引号,而非双引号

原因:
「Go」byte、rune与string

byte

占1个字节8个比特位(本质与uint8相同),使用单引号

var a byte = 'A'

rune

占4个字节32比特位(本质与int32相同),用于处理中文日文或者其他复合字符,使用单引号

var b rune = 'B'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容