您的位置:首页 > 编程语言 > Go语言

go语言渐入佳境[15]-struct声明与定义

2018-12-05 19:45 726 查看

结构体的声明

1
2
3
4
5
6
//声明Teacher结构体
type Teacher struct {
	name string
	age  int8
	sex  byte
}

结构体的定义

方式1

//1、var声明方式实例化结构体,初始化方式为:对象.属性=值

1
2
3
4
var t1 Teacher
 t1.name = "jonson"
 t1.age = 35
 t1.sex = 1

方式2

变量简短声明格式实例化结构体,初始化方式为:对象.属性=值

1
2
3
4
t2 := Teacher{}
t2.name = "olaya"
t2.age = 30
t2.sex = 1

方式3

3、变量简短声明格式实例化结构体,声明时初始化。初始化方式为:属性:值 。属性:值可以同行,也可以换行。(类似map的用法)

1
2
3
4
5
6
t3 := Teacher{
  name: "Josh",
  age:  28,
  sex:  1,
}
t3 = Teacher{name: "Josh2", age: 27, sex: 1}

方式4

变量简短声明格式实例化结构体,声明时初始化,不写属性名,按属性顺序只写属性值

1
t4 := Teacher{"Ruby", 30, 0}

方式5

创建指针类型的结构体

1
2
3
4
5
67
t5 := new(Teacher)
(*t5).name = "Running"
(*t5).age = 31(*t5).sex = 0
t5.name = "Running2"
t5.age = 31t5.sex = 0

方式6

匿名结构体

12
3
addr := struct {
  province, city string
}{"陕西省", "西安市"}

完整代码

1
2
3
4
5
67
8
9
10
1112
13
14
15
16
17
18
19
20
2122
23
24
25
26
27
28
29
30
3132
33
34
35
36
37
38
39
40
4142
43
44
45
46
47
48
49
50
5152
53
54
55
56
57
58
59
60
6162
package main

import "fmt"

//定义Teacher结构体
type Teacher struct {
name string
age  int8
sex  byte
}

func main() {
//1、var声明方式实例化结构体,初始化方式为:对象.属性=值
var t1 Teacher
fmt.Println(t1)
fmt.Printf("t1:%T , %v , %q \n", t1, t1, t1)
//if t1 == nil {
// fmt.Println()
//}
t1.name = "Steven"
t1.age = 35
t1.sex = 1 fmt.Println(t1)
fmt.Println("-------------------")

//2、变量简短声明格式实例化结构体,初始化方式为:对象.属性=值
t2 := Teacher{}
t2.name = "David"
t2.age = 30
t2.sex = 1 fmt.Println(t2)
fmt.Println("-------------------")

//3、变量简短声明格式实例化结构体,声明时初始化。初始化方式为:属性:值 。属性:值可以同行,也可以换行。(类似map的用法)
t3 := Teacher{
name: "Josh",
age:  28,
sex:  1,
}
t3 = Teacher{name: "Josh2", age: 27, sex: 1}
fmt.Println(t3)
fmt.Println("-------------------")

//4、变量简短声明格式实例化结构体,声明时初始化,不写属性名,按属性顺序只写属性值
t4 := Teacher{"Ruby", 30, 0} fmt.Println(t4)
fmt.Println("-------------------")

//5、创建指针类型的结构体
t5 := new(Teacher)
fmt.Printf("t5:%T , %v , %p \n", t5, t5, t5)
//(*t5).name = "Running"
//(*t5).age = 31//(*t5).sex = 0

//语法简写形式——语法糖
t5.name = "Running2"
t5.age = 31 t5.sex = 0
fmt.Println(t5)
fmt.Println("-------------------")
}

结构体匿名字段

1
2
3
4
5
67
8
9
10
1112
13
14
15
16
17
18
19
20
2122
23
24
25
26
27
package main

import "fmt"

type User struct {
//name string
//sex byte
//age int8
//height float64
//weight float64
string
byte
int8
float64

}

func main() {
//	实例化结构体
	user:= User{"jonson" , 'm' , 35 , 177.5}
	fmt.Println(user)
//如果想依次输出姓名、年龄、身高、性别
	fmt.Printf("姓名:%s \n" , user.string)
	fmt.Printf("身高:%.2f \n" , user.float64)
	fmt.Printf("性别:%c \n" , user.byte)
	fmt.Printf("年龄:%d \n" , user.int8)
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  区块链 go