初级会员
  • 第 10935 位会员
  • missuzhang
  • zhangxuliang
  • 2017-08-10 03:49:32
  • Offline
  • 20 18

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #4 @killernova 那不下面补充了么说,这破网站,发了就不能改。 &a其实反射之后应该是 reflect.Ptr.
  • 不能删除和修改好难受,以上第二条的解释是错误的。&a其实反射之后应该是 reflect.Ptr. 所以应该走![image.png](https://static.studygolang.com/180626/ddef03cc73ffa807a910b3ed8804c4b0.png)。 总之就是这块儿代码了,看看就知道了。
  • 1 &[1 2] 这个有点长,你可以看下fmt包。print.go中的printValue这个方法,重点我给你截图了:首先&的由来![image.png](https://static.studygolang.com/180626/c71f652038e10a9843b95cd586529ca0.png),然后递归获取value的内容,如果事slice或者数组就用[]包围![image.png](https://static.studygolang.com/180626/aed820ce1079a0366a0ab7fa78fa04d7.png) ) 2 slice地址是首元素地址是没错。因为fmt中%p是通过反射来去指针的![image.png](https://static.studygolang.com/180626/7e0c94f01ad01b92a12490988c85bf9b.png) 。而reflect包中是这样的![image.png](https://static.studygolang.com/180626/eb666b37c85f4b809cb009f7d03f18ed.png) 其实取得就是slice中的sliceHeader中的data。![image.png](https://static.studygolang.com/180626/aea005d47050674ce42530fc97a354ae.png)
  • 这个网站回复竟然不能修改,而且预览和实际效果完全不一样。。。 到这里执行以下即可: https://www.bytelang.com/o/s/c/NlPs*FRJTS4=
  • 是想要这个么? package main import ( "encoding/json" "fmt" ) type Test struct { Code int `json:"code"` Data struct { Song struct { Count int `json:"count"` ItemList []struct { Albummid string `json:"albummid"` Docid string `json:"docid"` Id string `json:"id"` Mid string `json:"mid"` Name string `json:"name"` Singer string `json:"singer"` } } `json:"song"` Name string `json:"name"` Order int `json:"order"` Type int `json:"type"` } `json:"data"` Subcode int `json:"subcode"` } func main() { test := ` { "code": 0, "data": { "song": { "count": 2, "itemlist": [{ "albummid": "001ZaCQY2OxVMg", "docid": "4960718353595419009", "id": "108041208", "mid": "000lH7Do3X6Aot", "name": "雪阳", "singer": "鹿予" }, { "albummid": "001ZaCQY2OxVMg", "docid": "4277524965976373789", "id": "107195477", "mid": "0004snbm3ZMeFz", "name": "雪阳花", "singer": "林爽" }], "name": "单曲", "order": 0, "type": 1 } }, "subcode": 0 }` var t Test err := json.Unmarshal([]byte(test), &t) if err != nil { fmt.Println(err) } fmt.Println(t.Data.Song.ItemList[1].Albummid) fmt.Println(t.Data.Song.ItemList) }