golang 什么时候使用指针
答案:1 悬赏:10 手机版
解决时间 2021-02-20 03:40
- 提问者网友:感性作祟
- 2021-02-19 12:00
golang 什么时候使用指针
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-02-19 13:05
1 func pointer_test() {
2 //空指针,输出为nil
3 var p *int
4 fmt.Printf("p: %v\n", p)
5 //指向局部变量,变量值初始为0
6 var i int
7 p = &i
8 fmt.Printf("p: %v,%v\n", p, *p)
9 //通过指针修改变量数值
10 *p = 8
11 fmt.Printf("p: %v,%v\n", p, *p)
12 //数组的初始化及输出
13 m := [3]int{3, 4, 5}
14 fmt.Printf("m:%v--%v,%v,%v\n", m, m[0], m[1], m[2])
15 //指针数组的初始化及输出
16 //j, k, l := 3, 4, 5
17 //x := [3]*int{&j, &k, &l}
18 x := [3]*int{&m[0], &m[1], &m[2]}
19 fmt.Printf("x:%v,%v,%v\n", x[0], x[1], x[2])
20 fmt.Printf("*x:%v,%v,%v\n", *x[0], *x[1], *x[2])
21
22 var n [3]*int
23 n = x
24 fmt.Printf("n:%v,%v,%v\n", n[0], n[1], n[2])
25 //指向数组的指针,也即二级指针的使用
26 y := []*[3]*int{&x}
27 fmt.Printf("y:%v,%v\n", y, y[0])
28 fmt.Printf("*y[0]:%v\n", *y[0])
29 fmt.Printf("*y[][]:%v,%v,%v\n", *y[0][0], *y[0][1], *y[0][2])
30
43 }
44
45 type Student struct {
46 name string
47 id int
48 score uint
49 }
50
51 func memery_test() {
52 //new分配出来的数据是指针形式
53 p := new(Student)
54 p.name = "China"
55 p.id = 63333
56 p.score = 99
57 fmt.Println(*p)
58 //var定义的变量是数值形式
59 var st Student
60 st.name = "Chinese"
61 st.id = 666333
62 st.score = 100
63 fmt.Println(st)
64 //make分配slice、map和channel的空间,并且返回的不是指针
65 var ptr *[]Student
66 fmt.Println(ptr) //ptr == nil
67 ptr = new([]Student) //指向一个空的slice
68 fmt.Println(ptr)
69 *ptr = make([]Student, 3, 100)
70 fmt.Println(ptr)
71 stu := []Student{{"China", 3333, 66}, {"Chinese", 4444, 77}, {"Chince", 5555, 88}}
72 fmt.Println(stu)
73 }
2 //空指针,输出为nil
3 var p *int
4 fmt.Printf("p: %v\n", p)
5 //指向局部变量,变量值初始为0
6 var i int
7 p = &i
8 fmt.Printf("p: %v,%v\n", p, *p)
9 //通过指针修改变量数值
10 *p = 8
11 fmt.Printf("p: %v,%v\n", p, *p)
12 //数组的初始化及输出
13 m := [3]int{3, 4, 5}
14 fmt.Printf("m:%v--%v,%v,%v\n", m, m[0], m[1], m[2])
15 //指针数组的初始化及输出
16 //j, k, l := 3, 4, 5
17 //x := [3]*int{&j, &k, &l}
18 x := [3]*int{&m[0], &m[1], &m[2]}
19 fmt.Printf("x:%v,%v,%v\n", x[0], x[1], x[2])
20 fmt.Printf("*x:%v,%v,%v\n", *x[0], *x[1], *x[2])
21
22 var n [3]*int
23 n = x
24 fmt.Printf("n:%v,%v,%v\n", n[0], n[1], n[2])
25 //指向数组的指针,也即二级指针的使用
26 y := []*[3]*int{&x}
27 fmt.Printf("y:%v,%v\n", y, y[0])
28 fmt.Printf("*y[0]:%v\n", *y[0])
29 fmt.Printf("*y[][]:%v,%v,%v\n", *y[0][0], *y[0][1], *y[0][2])
30
43 }
44
45 type Student struct {
46 name string
47 id int
48 score uint
49 }
50
51 func memery_test() {
52 //new分配出来的数据是指针形式
53 p := new(Student)
54 p.name = "China"
55 p.id = 63333
56 p.score = 99
57 fmt.Println(*p)
58 //var定义的变量是数值形式
59 var st Student
60 st.name = "Chinese"
61 st.id = 666333
62 st.score = 100
63 fmt.Println(st)
64 //make分配slice、map和channel的空间,并且返回的不是指针
65 var ptr *[]Student
66 fmt.Println(ptr) //ptr == nil
67 ptr = new([]Student) //指向一个空的slice
68 fmt.Println(ptr)
69 *ptr = make([]Student, 3, 100)
70 fmt.Println(ptr)
71 stu := []Student{{"China", 3333, 66}, {"Chinese", 4444, 77}, {"Chince", 5555, 88}}
72 fmt.Println(stu)
73 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯