Golang学习笔记


Go 语言学习笔记

1. 引言

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

2. 安装与环境配置

2.1 安装 Go

  • 访问 Go 官方网站 下载适合你操作系统的安装包。
  • 安装完成后,设置 GOPATHGOROOT 环境变量:
    • 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了


相关推荐
机智的叉烧41 分钟前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
量子-Alex2 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡2 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
007php0073 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
CCSBRIDGE4 小时前
Magento2项目部署笔记
笔记
爱吃西瓜的小菜鸡4 小时前
【C语言】判断回文
c语言·学习·算法
小A1595 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
亦枫Leonlew5 小时前
微积分复习笔记 Calculus Volume 2 - 5.1 Sequences
笔记·数学·微积分
岁岁岁平安5 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA5 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计