golang string轉json的一些坑

2022-07-17 04:30:17 字數 858 閱讀 8444

大佬們都知道怎麼在string中給string型別賦值帶雙引號的字串,沒錯就是用反斜槓,如下:

msg := ""
但是golang還支援另外乙個符號,我初學時候以為是單引號,但其實不是,是esc鍵下邊那個,那麼賦值帶雙引號的字串就如下就行了:

ret := ``
先看一段**,起作用是把字串轉換為結構體對應的json

type people struct 

type student struct

func main() "

var someone student

if err := json.unmarshal(byte(msg), &someone); err == nil else

}

仔細看看,有沒有錯?我只能說,這樣是輸出不出來答案的,賦值錯誤,看下面的執行結果:

傷腦筋啊,我仔細看了半天,發現在定義的people和student兩個結構體下邊有綠色的波浪線(我用的vscode),像下邊這樣:

滑鼠放上去顯示的是:

type people struct 

type student struct

func main() "

var someone student

if err := json.unmarshal(byte(msg), &someone); err == nil else

}

輸出的結果這樣:

bingo!!!

golang有很多奇奇怪怪的特性,歡迎各位大佬挖掘討論。

GoLang string及其相關操作

str hello world n hello gopher n 輸出 hello world hello gopher str hello world n hello gopher n 輸出 hello world nhello gopher n 雙引號中的轉義字元被替換,而反引號中原生字串中的 ...

golang string與byte的區別

為啥string和byte型別轉換需要一定的代價?為啥內建函式copy會有一種特殊情況copy dst byte,src string int?string和byte,底層都是陣列,但為什麼byte比string靈活,拼接效能也更高 動態字串拼接效能對比 今天看了原始碼 了一下。以下所有觀點都是個人...

golang string迭代和結構體初始化

1.golang字串range時返回的型別為rune 在某次測試時發現,string字串,直接用下標訪問和用range訪問返回的型別不同,參看下面 func main 輸出結果為 type is uint8 is type int32 is type int32即直接下標訪問和用range訪問返回的...