【青训营笔记创作活动】GO语言原理实践

35 阅读2分钟

课程笔记:Go 语言基础语法

1. Go 语言概述

  • Go 语言由 Google 于 2009 年发布,是一门静态强类型的编译型语言,设计上注重简洁高效,内置并发支持,广泛用于后端开发、分布式系统和云计算。

  • 特点

    • 简洁性:语法清晰,学习曲线平缓。
    • 高性能:通过静态编译和内存管理优化性能。
    • 并发能力:支持轻量级线程(Goroutines)和通信机制(Channels)。

2. 程序架构

  • 程序入口:Go 程序以 package main 声明开始,main() 函数作为运行起点。

  • 引入库:通过 import 关键字导入标准库或第三方库,例如 import "fmt" 用于标准输出。

  • 示例代码:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, Go!")
    }
    

3. 变量声明

  • 常规声明:通过 var 定义变量,需指定类型并赋值。

    var x int
    x = 10
    
  • 简洁声明:使用 := 可直接声明并初始化,编译器根据值推导类型。

    x := 10
    
  • 多变量可同一行声明


4. 数据类型

  • 基础类型int(整数)、float64(浮点数)、string(字符串)、bool(布尔值)。

  • 复合类型

    • 数组:长度固定,适合存储规模明确的数据。

      var arr [3]int = [3]int{1, 2, 3}
      
    • 切片:长度动态可变,通过 append 扩展。

      slice := []int{1, 2, 3}
      slice = append(slice, 4)
      
    • Map:键值对存储,用于快速查找。

      m := make(map[string]int)
      m["apple"] = 5
      
    • 结构体:封装复杂数据。

      type Person struct {
          Name string
          Age  int
      }
      p := Person{Name: "Alice", Age: 25}
      fmt.Println(p.Name)
      

5. 流程控制

  • 条件语句

    if x > 10 {
        fmt.Println("x is greater than 10")
    } else {
        fmt.Println("x is less or equal to 10")
    }
    
  • 循环语句:Go 仅支持 for,常用于遍历和计数循环。

    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
    

6. 函数与接口

  • 函数定义

    • 无参函数:func sayHello() { fmt.Println("Hello") }
    • 带参函数:func add(a int, b int) int { return a + b }
    • 多返回值:func divide(a, b int) (int, error) { return a / b, nil }
  • 接口编程:定义行为约束,解耦实现与调用。

    type Speaker interface {
        Speak() string
    }
    type Person struct {
        Name string
    }
    func (p Person) Speak() string {
        return "Hello, I am " + p.Name
    }
    

7. 并发编程

  • Goroutines:轻量线程实现高并发。

    go
    复制代码
    go func() {
        fmt.Println("Running in goroutine")
    }()
    
  • Channels:用于 goroutine 间通信。

    go
    复制代码
    ch := make(chan int)
    go func() { ch <- 42 }()
    value := <-ch
    fmt.Println(value)
    

8. 错误处理

  • Go 通过返回值 error 处理错误。

    go
    复制代码
    func divide(a, b int) (int, error) {
        if b == 0 {
            return 0, fmt.Errorf("division by zero")
        }
        return a / b, nil
    }
    

总结与体会

就是基本的语法啥的,算是打基础啦。Go 的简洁性和高性能特性让人印象深刻,通过实践代码理解其核心概念,更有助于灵活运用到实际开发中。