Go语言的基础语法

55 阅读1分钟

一:Go语言的基础语法

        1、变量声明:
               var a int = 10
               var b, c int = 20, 30
               d := 40 // 简短变量声明,只能在函数内部使用

        2、数组与切片:
              // 数组
              var arr [5]int = [5]int{1, 2, 3, 4, 5}
              // 切片
              s := []int{1, 2, 3}
              s = append(s, 4, 5) // 追加元素

        3、映射(Map):
              m := make(map[string]int)
              m["age"] = 25

        4、条件语句:
             if x > 10 {
             fmt.Println("x is greater than 10")
             } else if x == 10 {
              fmt.Println("x is equal to 10")
            } else {
            fmt.Println("x is less than 10")
            }
      
       5、循环:
            for i := 0; i < 10; i++ {
            fmt.Println(i)
            }

           // 无限循环
          for {
          break // 需要一个条件来跳出循环
           }

         // 遍历数组或切片
          for index, value := range arr {
          fmt.Println(index, value)
         }

     6switch语句:
       switch x {
       case 1:
       fmt.Println("x is 1") //无需break自动跳出
       case 2, 3:
       fmt.Println("x is 2 or 3")
       default:
       fmt.Println("x is neither 1, 2, nor 3")
      } 

     7、匿名函数和闭包:
          add := func(a int, b int) int {
          return a + b
          }

         // 闭包
        func makeAdder(x int) func(int) int {
         return func(y int) int {
         return x + y
         }
         } 

         add5 := makeAdder(5)
        fmt.Println(add5(2)) // 输出7

    8、并发:
     (1)goroutine:
        go func() {
       fmt.Println("This runs in a goroutine")
       }()

       // 等待一段时间,确保goroutine完成(在实际应用中,应使用更合适的同步机制)
       time.Sleep(1 * time.Second)

     (2)通道(Channel):
       ch := make(chan int)

       go func() {
       ch <- 42 // 发送数据到通道
       }()

       value := <-ch // 从通道接收数据
       fmt.Println(value)

    9、错误处理:
      (1)错误类型:
          func divide(a, b float64) (float64, error) {
         if b == 0 {
          return 0, errors.New("division by zero")
           }
          return a / b, nil
         }

      (2)处理错误:
        result, err := divide(10, 0)
       if err != nil {
       fmt.Println("Error:", err)
       } else {
       fmt.Println("Result:", result)
        }