zoukankan      html  css  js  c++  java
  • 结构体指针数组和结构体数组指针的区别

    对于初学者的我来说,面对又是数组又是结构体还有指针,一下子就蒙了,在网上查找资料也没有相应的介绍,经过我的测试终于明白了其中的猫腻:
    结构体数组指针 *[]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 ", xcdata)
    //fmt.Printf("结构体指针数组:%v ", &xcdata)
    for index, data := range xcdata {
    fmt.Printf("index:%v,data:%v ", index, *data)
    }
    }
    func main() {
    xcData := []XCDataStu{
    XCDataStu{Id: 758, Name: "David758"},
    XCDataStu{Id: 759, Name: "David759"}, //结构体数组的定义和初始化,逗号别少了
    }
    fmt.Println(xcData)
    fmt.Printf("=================== ")
    var xcdata *[]XCDataStu //指针指向
    xcdata = &xcData
    fmt.Println(*xcdata)

    fmt.Printf("==========结构体数组指针========= ")
    testArray(&xcData) //指针作为参数

    fmt.Printf("==========结构体指针数组========= ")
    data := []*XCDataStu{
    &XCDataStu{Id: 758, Name: "David758"},
    &XCDataStu{Id: 759, Name: "David759"},
    }
    testStruct(data)
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    python模块----os
    shell脚本中给字符串添加颜色
    shell脚本的多线程
    Python读取xlsx文件
    修改docker出现中文字符出现乱码的问题
    Django基本命令
    C#排列数字组合方法
    SQL 参数化模糊查询
    iframe自适应高度
    Vue.js配合ajax绑定数据
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11818644.html
Copyright © 2011-2022 走看看