Fork me on GitHub

Golang之旅14-struct2

指针类型的结构体

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

1
var struct_pointer *Books   //定义指针变量,前面加上*号

定义解释:

  • 指针变量存储结构体变量的地址
  • 查看结构体变量地址,可以将&符号置于结构体变量前面
  • 访问结构体中的成员通过.的方式
1
struct_pointer = &Books
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)
}

本文标题:Golang之旅14-struct2

发布时间:2019年09月20日 - 10:09

原始链接:http://www.renpeter.cn/2019/09/20/Golang%E4%B9%8B%E6%97%8514-struct2.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea