go的单引号、双引号、反引号的区别
Go 区别 单引号 双引号 引号
2023-09-14 09:00:36 时间
Go语言的字符串类型string
在本质上就与其他语言的字符串类型不同:
-
Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列
-
Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示
即:一个Go语言字符串是一个任意字节的常量序列。
Golang的双引号和反引号都可用于表示一个常量字符串,不同在于:
-
双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行)
-
反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式
而单引号则用于表示Golang的一个特殊类型:rune
,类似其他语言的byte
但又不完全一样,是指:码点字面量(Unicode code point),不做任何转义的原始内容。
#案例 #程序中,单引号的a,A是十进制编码,可以进行编码递增,换成双引号就会报错 package main import ( "fmt" "time" ) func worker(id int,c chan int){ for{ fmt.Printf("worker %d run %c\n",id,<-c) } } func chanDemo(){ var channels [10]chan int for i:=0;i<10;i++{ channels[i]=make(chan int) go worker(i,channels[i]) } for i:=0;i<10;i++{ channels[i] <- 'a'+i } for i:=0;i<10;i++{ channels[i] <- 'A'+i } time.Sleep(time.Millisecond) } func main() { chanDemo() }
相关文章
- 为什么开发人员从Java转到Go
- go shard map实现
- [Go] 单元测试/性能测试 (go test)
- [Go] 反射 - reflect.ValueOf()
- etcd安装及go简单操作
- 【GO】k8s 管理系统项目16[前端部分--项目初始化]
- [Go] go build 和 go install 的区别
- [Go] golang 去除 URI 链接中的 query string 参数
- 【Go】go实现 — 选择排序
- 【Go】go实现 — 数据结构与算法思维导图
- go结构体的方法和普通函数
- Go语言并发与并行学习笔记(三)
- Go语言自学系列 | golang标准库log
- Go语言自学系列 | golang通过接口实现OCP设计原则
- Go 聚合类型 结构体struct 总结(3)深浅拷贝
- go-filecoin 0.5.8