前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang之旅14-struct2

Golang之旅14-struct2

作者头像
皮大大
发布2021-03-02 14:30:03
2100
发布2021-03-02 14:30:03
举报
文章被收录于专栏:机器学习/数据可视化

指针类型的结构体

通过new关键字进行结构体的实例化,得到是结构体的地址。指向结构体指针的类似于其他指针变量,格式

代码语言:javascript
复制
var struct_pointer *Books   //定义指针变量,前面加上*号

定义解释:

  • 指针变量存储结构体变量的地址
  • 查看结构体变量地址,可以将&符号置于结构体变量前面
  • 访问结构体中的成员通过.的方式
代码语言:javascript
复制
struct_pointer = &Books
代码语言:javascript
复制
package main

//指针类型结构体

import "fmt"

type person struct {
	name, city string
	age int
}

func main(){
	var p2 = new(person)   //通过new创建指针类型的结构体
	fmt.Printf("%T\n", p2)
	//(*p2).name = "小明"
	//(*p2).city = "深圳"
	//(*p2).age = 20

	p2.city = "深圳"
	p2.name = "小明"   //(*p2).name = "小明",二者等价
	p2.age = 20
	fmt.Printf("%#v\n", p2)

	//取结构体的地址进行实例化
	p3 := &person{}   //实例化指针类型的person结构体
	fmt.Printf("%T\n", p3)
	fmt.Printf("%#v\n", p3)
	p3.name = "小红"
	p3.city = "北京"
	p3.age = 18
	fmt.Printf("%#v\n", p3)
}

构造函数

构造一个结构体实例的函数,构造函数通常在前面加上new

代码语言:javascript
复制
package main

import "fmt"

//构造函数:构造一个结构体实例的函数
//结构体是值类型
type person struct {
	name, city string
	age        int8
}

//构造函数:通常是new开头
//如果字段多,返回结构体的体积大,开销大,采用返回的是结构体指针
func newPerson(name,city string, age int8) *person{   //*person返回结构体指针
	return &person{  //
        name: name,  //初始化的字段名: 传入的参数
		city: city,
		age:  age,
	}
}

func main(){
    //调用构造函数
	p1 := newPerson("小王子", "北京", int8(18))
	fmt.Printf("type:%T  value:%#v\n",p1,p1)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-9-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 指针类型的结构体
  • 构造函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档