golang中的單引號(hào)轉(zhuǎn)義問(wèn)題
golang的單引號(hào)轉(zhuǎn)義
如題,golang中有時(shí)候需要將一個(gè)字符串中的單引號(hào)再轉(zhuǎn)義一次,比如在兩個(gè)單引號(hào)之間包含一個(gè)含有單引號(hào)的字符串的情形。
但是這個(gè)轉(zhuǎn)義卻不像C語(yǔ)言里的那樣,比如這樣寫:info = strings.Replace(info, "\'", "\\\'", -1)
就報(bào)unknown escape sequence錯(cuò)誤。
正確的寫法是:
info = strings.Replace(info, "'", "\\'", -1)
我想這里應(yīng)該是:在兩個(gè)雙引號(hào)之間不需要使用\'來(lái)表示單引號(hào)。
go語(yǔ)言中的單引號(hào)、雙引號(hào)和反引號(hào)
1.單引號(hào)
單引號(hào)在go語(yǔ)言中表示golang中的rune(int32)類型,單引號(hào)里面是單個(gè)字符,對(duì)應(yīng)的值為改字符的ASCII值。
func main() { ? ? a := 'A' ? ? fmt.Println(a) }
輸出:
random@random-wz MINGW64 /c/GOPATH/src/Test
$ go run main.go
65
2.雙引號(hào)
在go語(yǔ)言中雙引號(hào)里面可以是單個(gè)字符也可以是字符串,雙引號(hào)里面可以有轉(zhuǎn)義字符,如\n、\r等,對(duì)應(yīng)go語(yǔ)言中的string類型。
func main() { ? ? a := "Hello golang\nI am random_wz." ? ? fmt.Println(a) }
輸出:
random@random-wz MINGW64 /c/GOPATH/src/Test
$ go run main.go
Hello golang
I am random_wz.
3.反引號(hào)
反引號(hào)中的字符表示其原生的意思,在單引號(hào)中的內(nèi)容可以是多行內(nèi)容,不支持轉(zhuǎn)義。
func main() { ? ? a := `Hello golang\n: I am random_wz. Good.` ? ? fmt.Println(a) }
輸出:
random@random-wz MINGW64 /c/GOPATH/src/Test
$ go run main.go
Hello golang\n:
I am random_wz.
Good.
可以看到\n并沒(méi)有被轉(zhuǎn)義,而是被直接作為字符串輸出。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go語(yǔ)言實(shí)現(xiàn)socket實(shí)例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)socket的方法,實(shí)例分析了socket客戶端與服務(wù)器端的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02golang 40行代碼實(shí)現(xiàn)通用協(xié)程池
golang協(xié)程機(jī)制很方便的解決了并發(fā)編程的問(wèn)題,但是協(xié)程并不是沒(méi)有開銷的,所以也需要適當(dāng)限制一下數(shù)量。這篇文章主要介紹了golang 40行代碼實(shí)現(xiàn)通用協(xié)程池,需要的朋友可以參考下2018-08-08