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了


相关推荐
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海3 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
志尊宝4 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
后季暖5 小时前
电商问数笔记(2)
笔记
xier_ran5 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
microrain6 小时前
读数是 1008,用电量是 8:SagooIoT 计算服务的增量口径与七种计算策略
物联网·golang·计算服务·sagooiot
li星野7 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风7 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考7 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
starsky762388 小时前
Agent学习——上下文工程(三)
学习