结构体指针数组和结构体数组指针的区别

对于初学者的我来讲,面对又是数组又是结构体还有指针,一会儿就蒙了,在网上查找资料也没有相应的介绍,通过个人测试终于明白了其中的猫腻:结构体数组指针 *[]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)}
相关文章
相关标签/搜索