Go语言学习笔记整理和分享

最近在学习Go语言,整理了一些学习笔记,想和大家分享一下。不知道大家有没有推荐的Go语言学习资源或者实用的工具?另外,在整理笔记过程中遇到一些不太理解的地方,比如goroutine的调度机制和channel的高级用法,有没有比较清晰的讲解或示例可以参考?欢迎大家一起交流讨论!

2 回复

Go语言学习笔记整理:基础语法、并发模型、接口设计等核心内容。推荐使用GitHub或博客分享,附上代码示例和实践心得,方便交流。


Go语言学习笔记整理与分享

一、基础语法

  1. 变量声明

    • 使用 var 或短变量声明 :=
      var name string = "Go"
      age := 10 // 类型推断
      
    • 常量用 const,支持无类型常量。
  2. 数据类型

    • 基本类型:int, float64, bool, string
    • 复合类型:数组、切片(动态数组)、Map、结构体。
    • 切片示例:
      nums := []int{1, 2, 3}
      nums = append(nums, 4) // 追加元素
      
  3. 函数

    • 支持多返回值:
      func divide(a, b int) (int, error) {
          if b == 0 {
              return 0, errors.New("除数不能为0")
          }
          return a / b, nil
      }
      
  4. 控制结构

    • 循环仅用 for
      for i := 0; i < 5; i++ {
          fmt.Println(i)
      }
      
    • 条件语句:ifswitch(无需break)。

二、核心特性

  1. 并发编程

    • 使用 Goroutine 和 Channel:
      func main() {
          ch := make(chan int)
          go func() { ch <- 1 }() // 启动 Goroutine
          fmt.Println(<-ch)       // 输出 1
      }
      
    • 通过 sync.Mutex 处理数据竞争。
  2. 错误处理

    • 通过返回 error 类型显式处理错误,避免异常机制。
  3. 接口与结构体

    • 接口隐式实现:
      type Writer interface {
          Write([]byte) error
      }
      type File struct{}
      func (f File) Write(data []byte) error { 
          return nil // 自动实现 Writer
      }
      

三、常用标准库

  • fmt:格式化输入输出。
  • net/http:构建 HTTP 服务:
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, Go!")
    })
    http.ListenAndServe(":8080", nil)
    
  • encoding/json:JSON 序列化与反序列化。

四、学习建议

  1. 实践项目
    • 从 CLI 工具或 REST API 服务开始,巩固语法和并发模型。
  2. 代码规范
    • 使用 gofmt 格式化代码,遵循官方命名约定。
  3. 资源推荐
    • 官方文档:golang.org
    • 书籍:《The Go Programming Language》

通过系统整理和动手编码,可快速掌握 Go 的简洁性与高效并发能力!

回到顶部