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了


相关推荐
优思学院1 小时前
优思学院|如何从零开始自己学习六西格玛?
大数据·运维·服务器·学习·六西格玛黑带·cssbb
LN花开富贵1 小时前
stm32g431rbt6芯片中VREF+是什么?在电路中怎么设计?
笔记·stm32·单片机·嵌入式硬件·学习
怀九日1 小时前
C++(学习)2024.9.18
开发语言·c++·学习·面向对象·引用·
一道秘制的小菜1 小时前
C++第七节课 运算符重载
服务器·开发语言·c++·学习·算法
qq21084629531 小时前
【stm32笔记】使用rtt-studio与stm32CubeMx联合创建项目
笔记·stm32·嵌入式硬件
极术社区2 小时前
ResNeXt学习
开发语言·学习·计算机视觉·php
liangbm32 小时前
MATLAB系列07:输入/输入函数
开发语言·数据库·笔记·matlab·函数·自定义函数·matlab函数
徳一3 小时前
【pytorch学习笔记,利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装---免额外安装CUDA和cudnn】
pytorch·深度学习·学习
酒饮微醉-3 小时前
论文阅读--Planning-oriented Autonomous Driving(一)
论文阅读·笔记·学习·自动驾驶
GoppViper3 小时前
golang学习笔记28——golang中实现多态与面向对象
笔记·后端·学习·golang·多态·面向对象