slice.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package main
  2. import "fmt"
  3. func main() {
  4. /*
  5. var a []int
  6. var b []int = []int{2, 4, 6}
  7. c := []int{2, 4, 5}
  8. d := []int{2: 10}
  9. fmt.Println(a)
  10. fmt.Println(b)
  11. fmt.Println(c)
  12. fmt.Println(d)
  13. */
  14. // createSlice()
  15. // funcForSlice()
  16. // sliceCapacity()
  17. // mySlice()
  18. // deleteElement()
  19. // copySlice()
  20. // foo1()
  21. foo2()
  22. }
  23. func createSlice() {
  24. baseArray := [8]string{"Anna", "Max", "Eva", "Leo", "Nina", "Tom", "Sophie", "Chris"}
  25. slice1 := baseArray[1:5] // со 2 по 5 элемент
  26. slice2 := baseArray[:3] // c 1 по 3 элемент
  27. slice3 := baseArray[4:] // c 5 до конца
  28. fmt.Println(slice1)
  29. fmt.Println(slice2)
  30. fmt.Println(slice3)
  31. }
  32. func funcForSlice() {
  33. numbers := []int{10, 20, 30}
  34. numbers = append(numbers, 40, 50)
  35. fmt.Println(numbers)
  36. }
  37. func sliceCapacity() {
  38. baseArray := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  39. fmt.Printf("Базовый массив: %v\n", baseArray)
  40. baseSlice := baseArray[5:8]
  41. fmt.Printf(
  42. "Срез, основанный на базовом массиве длиной %d и емкостью %d: %v\n",
  43. len(baseSlice), cap(baseSlice), baseSlice)
  44. pointer := fmt.Sprintf("%p", baseSlice)
  45. baseSlice = append(baseSlice, 10)
  46. fmt.Printf("Массив: %v\n", baseArray)
  47. fmt.Printf(
  48. "Срез, основанный на базовом массиве длиной %d и емкостью %d: %v\n",
  49. len(baseSlice), cap(baseSlice), baseSlice)
  50. fmt.Println(pointer == fmt.Sprintf("%p", baseSlice))
  51. baseSlice = append(baseSlice, 11, 12, 13)
  52. fmt.Printf("Массив: %v\n", baseArray)
  53. fmt.Printf(
  54. "Срез, основанный на базовом массиве длиной %d и емкостью %d: %v\n",
  55. len(baseSlice), cap(baseSlice), baseSlice)
  56. fmt.Println(pointer == fmt.Sprintf("%p", baseSlice))
  57. // fmt.Println(pointer)
  58. }
  59. func mySlice() {
  60. // var baseSlice []int
  61. baseSlice := []int{1, 2, 3}
  62. // var baseSlice []int = []int{1, 2, 3}
  63. fmt.Printf("Type %T\n", baseSlice)
  64. fmt.Printf("Len baseSlice: %d, capacity: %d\n", len(baseSlice), cap(baseSlice))
  65. fmt.Println(baseSlice)
  66. // firstSlice :=
  67. }
  68. func deleteElement() {
  69. a := []int{1, 2, 3, 4, 5, 6, 7}
  70. a = append(a[0:2], a[3:]...)
  71. fmt.Println(a)
  72. }
  73. func copySlice() {
  74. a := []int{1, 2, 3}
  75. b := make([]int, 3, 3)
  76. n := copy(b, a)
  77. fmt.Printf("a = %v\n", a)
  78. fmt.Printf("b = %v\n", b)
  79. fmt.Printf("Скопировано %d элементов\n", n)
  80. // fmt.Printf("%v", b)
  81. // fmt.Printf("%d %d\n", len(b), cap(b))
  82. }
  83. func foo1() {
  84. var n, val int
  85. fmt.Scan(&n)
  86. var mySlice []int
  87. for i := 0; i < n; i++ {
  88. fmt.Scan(&val)
  89. mySlice = append(mySlice, val)
  90. }
  91. fmt.Println(mySlice[3])
  92. }
  93. func foo2() {
  94. var n, max int
  95. fmt.Scan(&n)
  96. mySlice := make([]int, n)
  97. for i := 0; i < n; i++ {
  98. fmt.Scan(&mySlice[i])
  99. }
  100. for index, value := range mySlice {
  101. fmt.Printf("Index: %d, value: %d\n", index, value)
  102. if value > max {
  103. max = value
  104. }
  105. }
  106. for _, value := range mySlice {
  107. fmt.Println(value)
  108. }
  109. fmt.Println(max)
  110. fmt.Printf("Создан slice %v\n", mySlice)
  111. fmt.Printf("len: %d, cap: %d\n", len(mySlice), cap(mySlice))
  112. }