Go單引號和雙引號區別

首先作個測試,看下面那個選項是正確的:數組

A. str:='abc'+'123'
B. str:="abc"+"123"
C. str:='123'+"abc"
D. str:=`123`+`abc`
E. str:=`123`+'abc'
F. str:=`123`+"abc"
1
2
3
4
5
6
正確答案爲BDF,爲何是這樣呢?這就是Go的特別之處。其餘語言,例如JavaScript,單引號和雙引號能夠同時使用,均可以用來表示字符串。Java中單引號表示char類型,雙引號表示string類型。而在Go中,雙引號是用來表示字符串string,其實質是一個byte類型的數組,單引號表示rune類型。還有一個反引號,用來建立原生的字符串字面量,它能夠由多行組成,但不支持任何轉義序列。所以,當把兩個不一樣類型的變量進行拼接時,就會報錯。函數

字符串
Go中字符串是一個不可變的值類型,內部用指針指向UTF-8字節數組。所以能夠用索引號訪問某字節,也能夠用len()函數來獲取字符串所佔的字節長度。例如:測試

str:="hello world"
fmt.Println(str[3:5])
1
2
這時的輸出結果爲「lo」,但若是將打印的內容改成「str[3]」,則會輸出108。爲何會出現這種結果,能夠查看go字符串的遍歷輸出。
在文章開始的測試例子中,還用到了字符串拼接符+。在實際使用時還須要注意,當拼接的字符串位於不一樣行時,拼接符須要放在上一行的末尾,這是由於編譯器會進行行尾自動補全分號的緣故。例如:指針

str:="hello"+
"world"
1
2
Go標準包也提供了函數來實現這一功能,strings.Join()。索引

str1:=[]string{"hello","world"}
str:=strings.Join(str1,",")
fmt.Println(str)ip

相關文章
相關標籤/搜索