zoukankan      html  css  js  c++  java
  • 结构体指针

    • 由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用时结构体指针完成

    • 可以结合new(T)函数创建结构体指针

        peo := new(People)
        //因为结构体本质是值类型,所以创建结构体指针时已经开辟了内存空间
        fmt.Println(peo == nil) //输出:false
        //由于结构体中属性并不是指针类型,所以可以直接调用
        peo.Name = "smallming"
        fmt.Println(peo)//输出:&{smallming 0}
        peo1:=peo
        peo1.Name="小明"
        fmt.Println(peo1,peo)//输出:&{小明 0} &{小明 0}
    • 如果不想使用new(T)函数,可以直接声明结构体指针并赋值
        //声明结构体指针
        var peo *People
        //给结构体指针赋值
        peo = &People{"smallming", 17}
        /*
        上面代码使用短变量方式如下
        peo:= &People{"smallming", 17}
         */
        fmt.Println(peo)

    判断

    • 结构体指针比较的是地址

    • (*结构体指针)取出地址中对应的值

        p1 := People{"smallming", 17}
        p2 := People{"smallming", 17}
        fmt.Printf("%p %p
    ", &p1, &p2) //输出地址不同
        fmt.Println(p1 == p2)           //输出:true
    
        p3 := new(People)
        p3 = &People{"smallming", 17}
        //结构体变量不能和指针比较,使用*指针取出地址中值
        fmt.Println(p1 == *p3) //输出:true
    
        p4 := &People{"smallming", 17}
        //指针比较的是地址
        fmt.Println(p3 == p4) //输出:false
  • 相关阅读:
    mysql高级查询(转的)
    PHP Content-type 的说明
    在textFieldShouldEndEditing 方法中调用[self.tableView reloadData] 失效问题
    关于navigationcontroller 隐藏navigationBar问题
    iOS证书、签名、安装描述文件
    swift 项目搭建
    定义私有cocoapods 源
    Git 服务器搭建
    UITabelView 介绍
    swift aes 加密
  • 原文地址:https://www.cnblogs.com/miaoweiye/p/12419597.html
Copyright © 2011-2022 走看看