main.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/mitchellh/mapstructure"
  5. )
  6. type myStruct struct {
  7. X, Y int
  8. }
  9. func (p myStruct) method() {
  10. fmt.Println(p.X)
  11. fmt.Println(p.Y)
  12. }
  13. func (p *myStruct) methodPtr() {
  14. fmt.Println(p.X)
  15. fmt.Println(p.Y)
  16. }
  17. type Point struct {
  18. X int
  19. Y int
  20. }
  21. func main() {
  22. /*
  23. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  24. fmt.Fprintf(w, "Hello world")
  25. })
  26. http.ListenAndServe(":9000", nil)
  27. */
  28. //test2()
  29. // test3()
  30. // test4()
  31. // test5()
  32. // test6()
  33. // test7()
  34. test8()
  35. }
  36. func test1() {
  37. var name string = "Dmitry"
  38. var age int = 23
  39. var c = fmt.Sprintf("My name is %s and ma age is %d", name, age)
  40. fmt.Println(c)
  41. }
  42. func test2() {
  43. for i := 0; i < 10; i++ {
  44. fmt.Println(i)
  45. }
  46. }
  47. func test3() {
  48. s1 := myStruct{
  49. X: 1,
  50. Y: 2,
  51. }
  52. s2 := myStruct{X: 123, Y: 23434}
  53. //ptr := &s2
  54. s1.method()
  55. s2.methodPtr()
  56. }
  57. func test4() {
  58. var a [2]string
  59. a[0] = "hello"
  60. a[1] = "world"
  61. numbers := [...]int{1, 2, 3}
  62. fmt.Println(a)
  63. fmt.Println(numbers)
  64. // Слайсы. Не имеют фиксированной длины
  65. letters := []string{"a", "b", "c"}
  66. letters[1] = "sadfasd"
  67. letters = append(letters, "new element", "werwe")
  68. // Пустой слайс
  69. createSlice := make([]string, 3)
  70. fmt.Println(letters)
  71. fmt.Println(len(createSlice))
  72. fmt.Println(cap(createSlice))
  73. }
  74. func test5() {
  75. animalArr := [4]string{
  76. "dog",
  77. "cat",
  78. "giraffe",
  79. "elephant",
  80. }
  81. /*
  82. animalSlic := []string{
  83. "dog",
  84. "cat",
  85. "giraffe",
  86. "elephant",
  87. }
  88. */
  89. a := animalArr[0:2]
  90. fmt.Println(a)
  91. b := animalArr[1:3]
  92. fmt.Println(b)
  93. b[0] = "123"
  94. fmt.Println(a)
  95. fmt.Println(animalArr)
  96. }
  97. func test6() {
  98. arr := []string{"a", "b", "c"}
  99. for i, l := range arr {
  100. fmt.Println(i, l)
  101. }
  102. for _, l := range arr {
  103. fmt.Println(l)
  104. }
  105. }
  106. func test7() {
  107. pointMap := map[string]Point{}
  108. otherMap := map[string]Point{
  109. "b": {X: 23, Y: 12},
  110. }
  111. otherPointMap := make(map[int]Point)
  112. pointMap["a"] = Point{
  113. X: 1,
  114. Y: 2,
  115. }
  116. fmt.Println(pointMap)
  117. fmt.Println(pointMap["a"])
  118. otherPointMap[1] = Point{X: 3, Y: 7}
  119. fmt.Println(otherPointMap[1])
  120. fmt.Println(otherMap["b"])
  121. key := 2
  122. value, ok := otherPointMap[key]
  123. if ok {
  124. fmt.Printf("key=%d exist in map", key)
  125. fmt.Println(value)
  126. } else {
  127. fmt.Printf("key=%d does exist in map", key)
  128. fmt.Println(value)
  129. }
  130. }
  131. func test8() {
  132. pointsMap := map[string]int{
  133. "X": 1,
  134. "Y": 2,
  135. }
  136. p1 := Point{}
  137. mapstructure.Decode(pointsMap, &p1)
  138. fmt.Println(p1)
  139. for k, v := range pointsMap {
  140. fmt.Println(k)
  141. fmt.Println(v)
  142. }
  143. }