結構體指針數組和結構體數組指針的區別

對於初學者的我來講,面對又是數組又是結構體還有指針,一會兒就蒙了,在網上查找資料也沒有相應的介紹,通過個人測試終於明白了其中的貓膩:結構體數組指針 *[]struct:結構體數組指針的指針是數組的指針,即表示數組的地址,數組裏面存放的是結構體類型結構體指針數組 []*struct:即指針表示結構體的地址,數組裏面存放的是結構體的指針有什麼解釋不對的地方請指正代碼測試:package mainimport (   "fmt")type XCDataStu struct {   Id   int    `json:"id"        xorm:"id"`   Name string `json:"name"   xorm:"name"`}//結構體數組指針func testArray(xcdata *[]XCDataStu) {   fmt.Println(*xcdata)}//結構體指針數組,在切片中傳的是結構體的指針func testStruct(xcdata []*XCDataStu) {   fmt.Printf("結構體指針數組:%v\n", xcdata)   //fmt.Printf("結構體指針數組:%v\n", &xcdata)   for index, data := range xcdata {      fmt.Printf("index:%v,data:%v\n", index, *data)   }}func main() {   xcData := []XCDataStu{      XCDataStu{Id: 758, Name: "David758"},      XCDataStu{Id: 759, Name: "David759"}, //結構體數組的定義和初始化,逗號別少了   }   fmt.Println(xcData)   fmt.Printf("===================\n")   var xcdata *[]XCDataStu //指針指向   xcdata = &xcData   fmt.Println(*xcdata)   fmt.Printf("==========結構體數組指針=========\n")   testArray(&xcData) //指針做爲參數   fmt.Printf("==========結構體指針數組=========\n")   data := []*XCDataStu{      &XCDataStu{Id: 758, Name: "David758"},      &XCDataStu{Id: 759, Name: "David759"},   }   testStruct(data)}
相關文章
相關標籤/搜索