大佬們都知道怎麼在string中給string類型賦值帶雙引號的字符串,沒錯就是用反斜槓,以下:golang
msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}"
可是golang還支持另一個符號,我初學時候覺得是單引號,但其實不是,是esc鍵下邊那個,那麼賦值帶雙引號的字符串就以下就好了:json
ret := `{"access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}`
先看一段代碼,起做用是把字符串轉換爲結構體對應的json3d
type people struct { name string `json:"name"` age int `json:"age"` id int `json:"id"` } type student struct { people id int `json:"sid"` } func main() { msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}" var someOne student if err := json.Unmarshal([]byte(msg), &someOne); err == nil { fmt.Println(someOne) fmt.Println(someOne.people) } else { fmt.Println(err) } }
仔細看看,有沒有錯?我只能說,這樣是輸出不出來答案的,賦值錯誤,看下面的運行結果:code
傷腦筋啊,我仔細看了半天,發如今定義的people和student兩個結構體下邊有綠色的波浪線(我用的vscode),像下邊這樣:blog
鼠標放上去顯示的是:token
你們都知道,golang中變量聲明成大寫和小寫能引用的範圍是不同的,那我就想了,大小寫問題???一臉懵逼把變量名首字母改爲了大寫,而後...就好了,代碼變成了下邊這樣:ci
type people struct { Name string `json:"name"` Age int `json:"age"` ID int `json:"id"` } type student struct { people ID int `json:"sid"` } func main() { msg := "{\"name\":\"zhangsan\", \"age\":18, \"id\":122463, \"sid\":122464}" var someOne student if err := json.Unmarshal([]byte(msg), &someOne); err == nil { fmt.Println(someOne) fmt.Println(someOne.people) } else { fmt.Println(err) } }
輸出的結果這樣:字符串
bingo!!!string
golang有不少奇奇怪怪的特性,歡迎各位大佬挖掘討論。class