Go语言的字符串类型string在本质上就与其他语言的字符串类型不同:
- Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列
- Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。
单引号 不能用来表示字符串;
双引号 可解析的字符串字面量 (支持转义,但不能用来引用多行),表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码点字面量(Unicode code point);
反引号 原生的字符串字面量 ,支持多行,不支持转义, 多用于书写多行消息、HTML以及正则表达式。
示例:
#案例
#程序中,单引号的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()
}