go语言渐入佳境[15]-struct声明与定义
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: "Josh3", age: 27, sex: 1}
方式4
变量简短声明格式实例化结构体,声明时初始化,不写属性名,按属性顺序只写属性值
1
t4 := Teacher{"Ruby", 30, 0}
方式5
创建指针类型的结构体
1
2
3
4
5
6
7
t5 := new(Teacher)
(*t5).name = "Running"
(*t5).age = 31
(*t5).sex = 0
t5.name = "Running2"
t5.age = 31
t5.sex = 0
方式6
匿名结构体
1
2
3
addr := struct {
province, city string
}{"陕西省", "西安市"}
完整代码
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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: "Josh3", 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
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)
}
本文链接:https://dreamerjonson.com/2018/11/26/golang-15-struct/
版权声明:本博客所有文章除特别声明外,均采用CC BY 4.0 CN协议许可协议。转载请注明出处!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。