golang结构体指针

淡淡的烟草味﹌ 2022-08-30 11:40 301阅读 0赞

1、由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成,结合new(T)函数创建结构体指针

  1. peo := new(People)
  2. //因为结构体本质是值类型,所以创建结构体指针时已经开辟了内存空间
  3. fmt.Println(peo == nil) //输出:false
  4. //由于结构体中属性并不是指针类型,所以可以直接调用
  5. peo.Name = "jeff"
  6. fmt.Println(peo)//输出:&{jeff 0}
  7. peo1:=peo
  8. peo1.Name="高级语言"
  9. fmt.Println(peo1,peo)//输出:&{高级语言 0} &{高级语言 0}

2、如果不想使用new(T)函数,可以直接声明结构体指针并赋值

  1. //声明结构体指针
  2. var peo *People
  3. //给结构体指针赋值
  4. peo = &People{ "jeff", 18}
  5. /* 上面代码使用短变量方式如下 peo:= &People{"jeff", 18} */
  6. fmt.Println(peo)

3、结构体指针比较的是地址,*结构体指针取出地址中对应的值

  1. p1 := People{ "jeff", 18}
  2. p2 := People{ "jeff", 18}
  3. fmt.Printf("%p %p\n", &p1, &p2) //输出地址不同
  4. fmt.Println(p1 == p2) //输出:true
  5. p3 := new(People)
  6. p3 = &People{ "jeff", 17}
  7. //结构体变量不能和指针比较,使用*指针取出地址中值
  8. fmt.Println(p1 == *p3) //输出:true
  9. p4 := &People{ "jeff", 17}
  10. //指针比较的是地址
  11. fmt.Println(p3 == p4) //输出:false

发表评论

表情:
评论列表 (有 0 条评论,301人围观)

还没有评论,来说两句吧...

相关阅读

    相关 golang结构定义

    结构体 Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型。Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。 Go...

    相关 Golang学习笔记 结构指针

    Golang是一门很特殊的语言,虽然它出生比较晚,但是在很多地方却和现在的编程语言有所不同。现在的编程语言要么是函数式的、要么是面向对象的,而Go语言却有指针、结构体这些概念,

    相关 结构指针

    一、结构体指针的定义与使用 当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。 结构体指针变量的值是所指向的结构体变量的起始地址。通过结构体指针即可访问该

    相关 golang 结构简介

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。试图表示一个现实世界中的实体。 结构体由一系列命名的元素组成,这些元素又被称为字