通学go语言系列之容器(三)

╰半夏微凉° 2022-10-10 11:12 180阅读 0赞

通学技术,面向区块链编程

9、容器之数组

  1. package main
  2. import "fmt"
  3. /** 容器 --可分为 数组 切片 map */
  4. // 数组
  5. func main() {
  6. // 整型 未初始化赋值0
  7. var a1 [5]int = [5]int{ 1, 2, 3, 4}
  8. fmt.Println(a1)
  9. // 赋值
  10. a1[4] = 6
  11. fmt.Println(a1)
  12. // 字符串类型赋值空
  13. s1 := [4]string{ "1", "2", "3"}
  14. fmt.Println(s1)
  15. // 二维数组
  16. a2 := [3][4]int{
  17. { 0, 1, 2, 3},
  18. { 4, 5, 6, 7},
  19. { 8, 9, 10, 11},
  20. }
  21. fmt.Println(a2)
  22. // 遍历二维数组
  23. for i := 0; i < 3; i++ {
  24. for j := 0; j < 4; j++ {
  25. fmt.Printf("i = %d, j = %d, val = %d\n", i, j, a2[i][j])
  26. }
  27. }
  28. }

10、切片

  1. package main
  2. import "fmt"
  3. /* 切片-- 可以理解为动态数组 特点:1.切片“start:end” 前闭后开,实际截取下标是start到end-1 2.切片是引用类型,对切片的修改会影响原数组 */
  4. func main() {
  5. /* 构造方式一 从数组或者切片截取而来 */
  6. a1 := [5]int{ 1, 2, 3, 4, 5}
  7. s1 := a1[2:4]
  8. fmt.Println(a1)
  9. fmt.Println(s1)
  10. s1[1] = 100
  11. fmt.Println(a1)
  12. fmt.Println(s1)
  13. /* 构造方式二: 使用make来构造切片 语法:make([]T,length,capacity) 说明:[]T 代表切片 T代表切片内元素的类型 length 切片的长度 capacity 切片的容量 可省略,默认与length相同 相关函数: len(s):计算切片的长度 cap(s): 计算切片的容量 append(s1,T...): s1为T类型的切片,append会向 s1所有元素后追加T,并且返回s1+T这个心切片 copy(s2,s1): 将s1的内容拷贝到s2,s1和s2相互独立 */
  14. var s2 []int
  15. s2 = append(s2, 1)
  16. s2 = append(s2, 2)
  17. s2 = append(s2, 3, 4, 5)
  18. printSlice(s2)
  19. s3 := make([]int, 3)
  20. printSlice(s3)
  21. // 当超过容量的时候,容量会以len*2的方式自动扩大
  22. s3 = append(s3, 4)
  23. printSlice(s3)
  24. }
  25. func printSlice(s []int) {
  26. // %v go语言特殊的输出方式 可以打印容器 自定义方式等
  27. fmt.Printf("len = %d, cap = %d, s = %v\n", len(s), cap(s), s)
  28. }

map

  1. package main
  2. import "fmt"
  3. /* map 字典 key-value 无序键值对集合 */
  4. func main() {
  5. // 报空指针(nil)错误
  6. //var testMap map[string]string
  7. //testMap["test"] = "测试"
  8. //fmt.Println(testMap)
  9. // 必须使用make函数构造
  10. countryCapitalMap := make(map[string]string)
  11. //map[]
  12. fmt.Println(countryCapitalMap)
  13. countryCapitalMap["China"] = "BeiJing"
  14. countryCapitalMap["France"] = "Paris"
  15. countryCapitalMap["America"] = "Washington"
  16. // 默认按照字母顺序排列
  17. fmt.Println(countryCapitalMap)
  18. //获取key对应的value值
  19. capital1 := countryCapitalMap["China"]
  20. fmt.Println(capital1)
  21. // 不存在怎么办呢?
  22. capital2 := countryCapitalMap["Japan"]
  23. fmt.Println("日本的首都是:" + capital2)
  24. //指示器 ok 是一个变量,可以为任何值 当“ok”为真时 代表字典内存在该key对应的value
  25. capital2, ok := countryCapitalMap["Japan"]
  26. if ok {
  27. fmt.Println("此处不会打印出来" + capital2)
  28. }
  29. capital3, isExist := countryCapitalMap["China"]
  30. if isExist {
  31. fmt.Println(isExist, capital3)
  32. }
  33. fmt.Println("--------------我是分割线------------------")
  34. // map的遍历 --range
  35. for k, v := range countryCapitalMap {
  36. fmt.Println(k, "'s capital is:", v)
  37. }
  38. // range 扩展 可以遍历数组或者切片
  39. a := []int{ 10, 20, 30, 40, 50}
  40. for k, v := range a {
  41. fmt.Printf("a[%d]=%d\n", k, v)
  42. }
  43. // 占位符 “_” 当我们不需要使用一些东西时 可以使用占位符
  44. for _, v := range countryCapitalMap {
  45. fmt.Println("只打印首都:", v)
  46. }
  47. }

学通技术,构建可信任社会

发表评论

表情:
评论列表 (有 0 条评论,180人围观)

还没有评论,来说两句吧...

相关阅读