Skip to content

Commit d3665a0

Browse files
committed
update lesson8
1 parent b1d4e02 commit d3665a0

File tree

2 files changed

+103
-2
lines changed

2 files changed

+103
-2
lines changed

workspace/lesson8/func.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,31 @@ func add(a, b int, c, d string) (int, string) {
55
return a+b, c+d
66
}
77

8+
func swap(a int, b int) {
9+
println("[func|swap]a=", a, "b=", b)
10+
a, b = b, a
11+
println("[func|swap]a=", a, "b=", b)
12+
}
13+
14+
func swapRef(pa *int, pb *int) {
15+
println("[func|swapRef]a=", *pa, "b=", *pb)
16+
var temp = *pa
17+
*pa = *pb
18+
*pb = temp
19+
println("[func|swapRef]a=", *pa, "b=", *pb)
20+
}
21+
822
func main() {
923
a, b := 1, 2
1024
c, d := "c", "d"
1125
res1, res2 := add(a, b, c, d)
1226
println("res1=", res1, "res2=", res2)
27+
28+
println("[func|main]a=", a, "b=", b)
29+
swap(a, b)
30+
println("[func|main]a=", a, "b=", b)
31+
32+
println("[func|main]a=", a, "b=", b)
33+
swapRef(&a, &b)
34+
println("[func|main]a=", a, "b=", b)
1335
}

workspace/lesson8/readme.md

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,87 @@
6161

6262
* 函数参数
6363

64-
* 值传递
65-
* 引用传递:指针
64+
* 值传递:和C++里的传值一样,参加下例里的swap
65+
66+
```go
67+
package main
68+
69+
70+
func add(a, b int, c, d string) (int, string) {
71+
return a+b, c+d
72+
}
73+
74+
func swap(a int, b int) {
75+
println("[func|swap]a=", a, "b=", b)
76+
a, b = b, a
77+
println("[func|swap]a=", a, "b=", b)
78+
}
79+
80+
func swapRef(pa *int, pb *int) {
81+
println("[func|swapRef]a=", *pa, "b=", *pb)
82+
var temp = *pa
83+
*pa = *pb
84+
*pb = temp
85+
println("[func|swapRef]a=", *pa, "b=", *pb)
86+
}
87+
88+
func main() {
89+
a, b := 1, 2
90+
c, d := "c", "d"
91+
res1, res2 := add(a, b, c, d)
92+
println("res1=", res1, "res2=", res2)
93+
94+
println("[func|main]a=", a, "b=", b)
95+
swap(a, b)
96+
println("[func|main]a=", a, "b=", b)
97+
98+
println("[func|main]a=", a, "b=", b)
99+
swapRef(&a, &b)
100+
println("[func|main]a=", a, "b=", b)
101+
}
102+
```
103+
104+
* 引用传递:和 C++里的传指针一样,参见下例里的swapRef
105+
106+
```go
107+
package main
108+
109+
110+
func add(a, b int, c, d string) (int, string) {
111+
return a+b, c+d
112+
}
113+
114+
func swap(a int, b int) {
115+
println("[func|swap]a=", a, "b=", b)
116+
a, b = b, a
117+
println("[func|swap]a=", a, "b=", b)
118+
}
119+
120+
func swapRef(pa *int, pb *int) {
121+
println("[func|swapRef]a=", *pa, "b=", *pb)
122+
var temp = *pa
123+
*pa = *pb
124+
*pb = temp
125+
println("[func|swapRef]a=", *pa, "b=", *pb)
126+
}
127+
128+
func main() {
129+
a, b := 1, 2
130+
c, d := "c", "d"
131+
res1, res2 := add(a, b, c, d)
132+
println("res1=", res1, "res2=", res2)
133+
134+
println("[func|main]a=", a, "b=", b)
135+
swap(a, b)
136+
println("[func|main]a=", a, "b=", b)
137+
138+
println("[func|main]a=", a, "b=", b)
139+
swapRef(&a, &b)
140+
println("[func|main]a=", a, "b=", b)
141+
}
142+
```
143+
144+
66145

67146
* 函数高级用法
68147

0 commit comments

Comments
 (0)