go的單引號、雙引號、反引號的區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM