Skip to content

Commit c6ac236

Browse files
committed
2023-07-17
1 parent 2853668 commit c6ac236

File tree

6 files changed

+107
-0
lines changed

6 files changed

+107
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// 将一个切片追加到另一个切片
6+
func main(){
7+
8+
s1 := []int{1,2}
9+
s2 := []int{3,4}
10+
11+
res := append(s1,s2...)
12+
13+
fmt.Println(res)
14+
}
15+

chapter_4/4-22 slice 迭代/hello.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// 迭代
6+
func main() {
7+
8+
slice := []int{10, 20, 30, 40}
9+
10+
for index, value := range slice {
11+
12+
fmt.Printf("Index: %d Value: %d\n", index, value)
13+
}
14+
15+
// range 提供了每个元素的副本
16+
for index, value := range slice {
17+
/* 因为迭代返回的变量是一个迭代过程中根据切片依次赋值的新变量,所以 value 的地址总
18+
是相同的。要想获取每个元素的地址,可以使用切片变量和索引值 */
19+
fmt.Printf("Value: %d Value-Addr: %X ElemAddr: %X\n", value, &value, &slice[index])
20+
}
21+
22+
// 使用空白标识符(下划线)来忽略索引值
23+
24+
for _, value := range slice {
25+
fmt.Printf("Value: %d\n", value)
26+
}
27+
28+
29+
// 使用传统的 for 循环对切片进行迭代(函数 len 返回切片的长度,函数 cap 返回切片的容量)
30+
31+
for index :=2; index < len(slice);index++{
32+
fmt.Printf("Index: %d Value: %d\n", index, slice[index])
33+
}
34+
}

chapter_4/4-23 slice 多维/hello.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// 迭代
6+
func main() {
7+
8+
slice := [][]int{{10}, {100, 200}}
9+
10+
fmt.Println(slice)
11+
12+
// 为第一个切片追加值为 20 的元素
13+
slice[0] = append(slice[0], 20)
14+
15+
fmt.Println(slice)
16+
17+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func foo(slice []int)[]int {
6+
return slice
7+
}
8+
9+
// 迭代
10+
func main() {
11+
12+
slice := make([]int, 10)
13+
14+
res := foo(slice)
15+
16+
fmt.Println(res,&res,&slice)
17+
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main (){
6+
7+
8+
9+
dict_1 := make(map[string]int)
10+
11+
12+
dict_2 := map[string]string{"Red":"#1","Blue":"#2"}
13+
14+
/* 映射的键可以是任何值。这个值的类型可以是内置的类型,也可以是结构类型,只要这个值
15+
可以使用==运算符做比较。切片、函数以及包含切片的结构类型这些类型由于具有引用语义,
16+
不能作为映射的键,使用这些类型会造成编译错误 */
17+
18+
// dict_3 := map[[]string]string{} invalid map key type
19+
20+
dict_4 := map[string][]int{"Red":[]int{1,2,3}}
21+
22+
fmt.Println(dict_1,dict_2,dict_4)
23+
}

lib/Go语言实战.pdf

-9.96 MB
Binary file not shown.

0 commit comments

Comments
 (0)