Golang学习笔记


Go 语言学习笔记

1. 引言

Go 语言是由 Google 开发的一种静态类型、编译型的系统编程语言。它以简洁、高效和易于理解著称,并且支持并发编程。

2. 安装与环境配置

2.1 安装 Go

  • 访问 Go 官方网站 下载适合你操作系统的安装包。
  • 安装完成后,设置 GOPATH 和 GOROOT 环境变量:
    • GOROOT 是 Go 的安装路径。
    • GOPATH 用于指定 Go 工作空间的位置,默认情况下可以忽略,使用 Go 1.8 之后的版本管理机制 go modules。

2.2 验证安装

  • 打开终端或命令行工具,运行以下命令来检查 Go 版本:

    sh 复制代码
    go version

3. 基础语法

3.1 变量声明

  • 使用 var 关键字声明变量:

    go 复制代码
    var x int = 10
  • 使用简短声明 :=:

    go 复制代码
    y := "Hello, World!"

3.2 函数定义

  • 函数使用 func 关键字定义:

    go 复制代码
    func add(a int, b int) int {
        return a + b
    }

3.3 控制流语句

  • if 语句:

    go 复制代码
    if x > 0 {
        fmt.Println("Positive")
    } else {
        fmt.Println("Negative or Zero")
    }
  • for 循环:

    go 复制代码
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }

4. 核心特性

4.1 并发编程

  • 使用 goroutines 实现轻量级线程:

    go 复制代码
    go func() {
        fmt.Println("Hello from goroutine")
    }()
  • 使用 channels 进行 goroutine 之间的通信:

    go 复制代码
    ch := make(chan string)
    go func() {
        ch <- "Hello from channel"
    }()
    fmt.Println(<-ch)

4.2 接口

  • 接口定义行为:

    go 复制代码
    type Speaker interface {
        Speak() string
    }
  • 实现接口:

    go 复制代码
    type Dog struct{}
    func (d Dog) Speak() string {
        return "Woof!"
    }

5. 工具与实践

5.1 包管理

  • 使用 go mod 初始化模块:

    sh 复制代码
    go mod init example.com/myproject
  • 添加依赖:

    sh 复制代码
    go get github.com/some/package

5.2 测试

  • 编写测试文件(如 mypackage_test.go):

    go 复制代码
    package mypackage_test
    
    import (
        "testing"
        "example.com/mypackage"
    )
    
    func TestAdd(t *testing.T) {
        result := mypackage.Add(2, 3)
        if result != 5 {
            t.Errorf("Expected 5, got %d", result)
        }
    }
  • 运行测试:

    sh 复制代码
    go test

5.3 性能分析

  • 使用 pprof 分析性能瓶颈:

    sh 复制代码
    go tool pprof http://localhost:6060/debug/pprof/profile

6. 结论

Go 语言提供了一种简单而强大的方式来构建高性能的应用程序。

我要开始学Golang了


相关推荐
前进的李工5 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
Zenova EdgeOS5 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
正在走向自律7 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
JavaPub-rodert7 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
蒸蒸yyyyzwd7 小时前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo9 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga9 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao10 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野10 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光10 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习