package main
import (
"encoding/json"
"fmt"
"reflect"
"strconv"
)
func main() {
//内置基礎内型
//布爾類型:bool:true , false
//整型:int8 byte int16 int unit unitptr (uintptr是整型,可以足夠保存指針的值得範圍)
//浮點類型:float32 float64
//複數類型:complex64 complex128
//字符串:string
//字符類型:rune
//錯誤類型:error
//複合類型:指針(pointer) 數組(array)切片(slice)字典(map)通道(chan)結構體(struct)接口(interface)
//普通類型轉換
//string 轉 int
str := "30k"
intValue, _ := strconv.Atoi(str)
fmt.Println(reflect.TypeOf(intValue))
//string 轉 int64 或者int8等
int64Value, _ := strconv.ParseInt(str, 10, 64)
fmt.Println(reflect.TypeOf(int64Value))
//int轉string
intTmp := 100
strTmp := strconv.Itoa(intTmp)
fmt.Println(reflect.TypeOf(strTmp))
//int64轉string
var intTmp64 int64
intTmp64 = 0xA
strTmp = strconv.FormatInt(intTmp64, 10)
fmt.Println(reflect.TypeOf(strTmp))
jsonStr := "{\"euin\":\"342d05ad579b8e068fdc29f30384c9b3\",\"s\":\"o\",\"videolst\":[{\"ctime\":\"1970-01-01 08:00:00\",\"cull\":0,\"desc\":\"假如生活捉弄了你...不要悲傷...不要心急...\\r\\n反正...以後也不會好過...\",\"duration\":\"03:25\",\"pic\":\"http://vpic.video.qq.com/50350981/l0553wqx9ar_160_90_3.jpg\",\"play_count\":\"5.6萬\",\"title\":\"今天不開心沒關係,反正明天也不會好過\",\"title_s\":\"今天不開心沒關係,反正明天也不會好過\",\"uploadtime\":\"2017-09-21\",\"url\":\"https://v.qq.com/x/page/l0553wqx9ar.html\",\"vid\":\"l0553wqx9ar\"},{\"ctime\":\"1970-01-01 08:00:00\",\"cull\":0,\"desc\":\"\",\"duration\":\"03:20\",\"pic\":\"http://vpic.video.qq.com/51661863/w14216higcw_160_90_3.jpg\",\"play_count\":\"7972\",\"title\":\"假如生活捉弄了你...不要悲傷...不要心急...反正...以後也不會好過...\",\"title_s\":\"假如生活捉弄了你...不要悲傷...不要心急...反正...以後也不會好過...\",\"uploadtime\":\"2017-09-21\",\"url\":\"https://v.qq.com/x/page/w14216higcw.html\",\"vid\":\"w14216higcw\"}],\"vtotal\":203}"
//關於這樣的字符串如何通過某個字段判斷是否獲取到數據或者其他,這裡就是涉及到interface 解析 成map 或者string 涉及到斷言。普通類型的直接強轉就行,涉及到複雜的結構就不要使用斷言。
//爲啥要這麽定義,因爲後面的不是string只能用interface{}來表示任何或者未知類型
var jsonMap map[string]interface{} = make(map[string]interface{})
//首先json_decode
json.Unmarshal([]byte(jsonStr), &jsonMap)
//獲取videolst的裡面的url寫到slice裡面
var urls []string
fmt.Println(jsonMap["videolst"])
if a, ok := jsonMap["videolst"].([]interface{}); ok {
for _, b := range a {
if c, ok := b.(map[string]interface{}); ok {
for k2, d := range c {
if e, ok := d.(string); ok {
if k2 == "url" {
urls = append(urls, e)
} else {
continue
}
}
}
}
}
}
//上面通過多次斷言獲取了url的列表
fmt.Println(urls)
}閲完此文,您的感想如何?
-
有用
1
-

沒用
1
-

開心
1
-

憤怒
1
-

可憐
1
1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667
相關課文
-
GO語言GORM如何更新字段
-
gorm如何創建記錄與模型定義需要注意什麽
-
gorm一般查詢與高級查詢
-
GORM時間戳跟蹤及CURD(增刪改查)
我要說說
網上賓友點評
課文推薦