go语言中的map和slice相关一些基本操作

题目来源:奇安信

答案1:

slice 使用

  1. package main
  2. import "fmt"
  3. func main() {
  4. //在go语言中没有所谓的动态数组,所以就有了切片
  5. //切片使用的三中方式
  6. //第一种
  7. var intArray [5]int = [...]int{1, 2, 3, 4, 5}
  8. slice := intArray[2:4]
  9. fmt.Println(slice)
  10. fmt.Println(intArray)
  11. fmt.Println(len(slice))
  12. //第二种
  13. //var Array[]int(类型)=make([](类型),len,cap)
  14. var Array []int = make([]int, 4, 8)
  15. Array[2] = 33 //没有定义的都为0
  16. fmt.Printf("%v\n", Array[2])
  17. fmt.Println(Array)
  18. //第三种
  19. var strSlice []string = []string{"tom", "alice", "jake"}
  20. fmt.Println(strSlice)
  21. //切片的遍历
  22. for i, v := range strSlice {
  23. fmt.Printf("第%v个元素:%v\n", i, v)
  24. }
  25. strSlice1 := strSlice[1:2]
  26. fmt.Println(strSlice1)
  27. strSlice1[0] = "alex" //主要因为strSlice1是从strSlice中切出来的时,改变strSlice1也会改变strSlice(引用)
  28. fmt.Println(strSlice)
  29. //append可以给切片加上元素
  30. strSlice = append(strSlice, "bier")
  31. fmt.Println(strSlice)
  32. //加上切片,注意加上...
  33. strSlice = append(strSlice, strSlice...)
  34. fmt.Println(strSlice)
  35. //切片的拷贝
  36. var strSlice3 []string = make([]string, 10)
  37. copy(strSlice3, strSlice)
  38. fmt.Println(strSlice3)
  39. //拷贝后,修改原来的值不会对拷贝的结果产生影响
  40. strSlice[3] = "小明"
  41. fmt.Println(strSlice)
  42. fmt.Println(strSlice3)
  43. //string进行切片处理
  44. str := "198abcdefg"
  45. slice0 := str[3:]
  46. fmt.Println(slice0)
  47. //注意字符串是不能修改的,但是可以通过切片方式改变字符串
  48. str1 := []byte(str)
  49. str1[0] = '8'
  50. str = string(str1)
  51. fmt.Println(str)
  52. //有汉字时
  53. str2 := []rune(str)
  54. str2[0] = '好'
  55. str = string(str2)
  56. fmt.Println(str)
  57. }

map使用

  1. func main() {
  2. //map的使用,注意map声明时没有分配空间,所以要用make进行分配
  3. var a map[string]string
  4. a = make(map[string]string, 10)
  5. a["No.1"] = "A+"
  6. a["No.2"] = "B"
  7. a["No.3"] = "C"
  8. a["No.1"] = "A"
  9. fmt.Println(a)
  10. //map声明的其他方式
  11. //二
  12. b := make(map[string]string)
  13. b["一"] = "太阳"
  14. b["二"] = "月亮"
  15. b["三"] = "星星"
  16. fmt.Println(b)
  17. //三
  18. c := map[string]string{
  19. "one": "广东",
  20. "two": "北京",
  21. "three": "上海",
  22. }
  23. fmt.Println(c)
  24. name := make(map[string]string)
  25. name["1"] = "小明"
  26. name["2"] = "小张" //这里相当于在增加了
  27. name["3"] = "小王"
  28. fmt.Println(name)
  29. //如果key没有的话,就是增加,如果有的话就是修改
  30. name["1"] = "小林"
  31. fmt.Println(name)
  32. //对map进行删除
  33. delete(name, "2")
  34. fmt.Println(name)
  35. //map的查询
  36. val, ok := name["3"]
  37. //如果有的话,ok值为true,没有为false
  38. if ok {
  39. fmt.Printf("存在 %v\n", val)
  40. } else {
  41. fmt.Println("不存在")
  42. }
  43. }