go单引号、双引号、反引号区别

本文深入探讨了Go语言中字符串类型的独特之处,指出其为UTF-8编码的变宽字符序列,区别于Java、C++及Python3中的定宽字符序列。文章还详细介绍了Go语言中字符串的表示方式,包括双引号、反引号的不同用途及其特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值