【MapSheep】
[好记性不如烂笔头]

Go 语言教程 - 快速入门指南

🎯 Go 是什么?

  • 创造者:Google(2009年发布)
  • 特点:简单、高效、安全
  • 用途:后端服务、云计算、区块链等

⚡ 快速安装

下载安装

  1. 访问官网:https://golang.org
  2. 下载对应系统版本
  3. 一键安装即可

验证安装

# 查看版本
go version

# 查看环境
go env

📁 项目结构

my-project/
├── src/     # 源代码
├── bin/     # 编译后的可执行文件
└── pkg/     # 包文件

提示:Go 1.11+ 可以用 go mod 管理项目,更简单!

📝 第一个 Go 程序

创建文件 hello.go

package main  // 声明包名

import "fmt"  // 导入打印库

func main() {
    fmt.Println("Hello, Go!")  // 打印输出
}

运行程序:

go run hello.go

编译程序:

go build hello.go
./hello

🔑 基础语法

变量声明

// 三种方式
var name string = "小明"      // 方式1
var age = 20                 // 方式2(自动类型推断)
score := 95.5                // 方式3(最常用)

数据类型

// 基本类型
var isStudent bool = true    // 布尔型
var score int = 100          // 整型
var price float64 = 99.99    // 浮点型
var name string = "Go"       // 字符串

// 零值(默认值)
// int: 0, float: 0.0, string: "", bool: false

控制语句

// if-else
if score >= 60 {
    fmt.Println("及格")
} else {
    fmt.Println("不及格")
}

// for循环(Go只有for一种循环)
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

// switch
grade := 'B'
switch grade {
case 'A':
    fmt.Println("优秀")
case 'B':
    fmt.Println("良好")
default:
    fmt.Println("继续努力")
}

📦 函数定义

// 定义函数
func add(a int, b int) int {
    return a + b
}

// 调用函数
result := add(3, 5)
fmt.Println(result)  // 输出: 8

// 多返回值
func getUser() (string, int) {
    return "小明", 20
}

name, age := getUser()

🎪 数组和切片

数组(长度固定)

// 声明数组
var arr [3]int = [3]int{1, 2, 3}
var arr2 = [...]int{1, 2, 3, 4}  // 自动计算长度

切片(长度可变,更常用)

// 创建切片
slice1 := []int{1, 2, 3}
slice2 := make([]int, 3)  // 长度3,容量3

// 添加元素
slice1 = append(slice1, 4, 5)  // [1 2 3 4 5]

// 切片操作
fmt.Println(slice1[1:3])  // [2 3](获取索引1到2)

🗺️ Map(字典/哈希表)

// 创建map
scoreMap := make(map[string]int)
scoreMap["小明"] = 90
scoreMap["小红"] = 85

// 或者直接创建
ages := map[string]int{
    "小明": 20,
    "小红": 19,
}

// 访问
age := ages["小明"]

// 检查键是否存在
if value, exists := ages["小李"]; exists {
    fmt.Println(value)
} else {
    fmt.Println("不存在")
}

🏗️ 结构体(Struct)

// 定义结构体
type Person struct {
    Name string
    Age  int
}

// 使用结构体
var p1 Person
p1.Name = "小明"
p1.Age = 20

// 或直接创建
p2 := Person{Name: "小红", Age: 19}

🧩 接口(Interface)

// 定义接口
type Animal interface {
    Speak() string
}

// 实现接口
type Dog struct{}

func (d Dog) Speak() string {
    return "汪汪!"
}

func main() {
    var a Animal = Dog{}
    fmt.Println(a.Speak())  // 汪汪!
}

📤 错误处理

// 标准错误处理方式
result, err := someFunction()
if err != nil {
    fmt.Println("出错啦:", err)
    return
}
fmt.Println("结果:", result)

⚙️ 常用命令速查

# 运行程序
go run 文件名.go

# 编译程序
go build 文件名.go

# 安装程序(到GOPATH/bin)
go install

# 下载依赖包
go get 包名

# 初始化模块(新项目)
go mod init 项目名

# 整理依赖
go mod tidy

💡 小贴士

  1. 包管理:使用 go mod,不用管 GOPATH
  2. 代码格式gofmt 自动格式化代码
  3. 变量命名:小驼峰,如 userName
  4. 导包:导入不用的包会报错
  5. 编译快:Go 编译速度非常快

🚀 下一步学习

  1. Web开发:学习 net/http
  2. 并发编程:学习 goroutine 和 channel
  3. 数据库:学习 database/sql 包
  4. 测试:学习 go test 命令

一句话总结:Go = 简单语法 + 高性能 + 好用的工具链,适合写服务器程序!

posted on 2026-01-08 11:19  (Play)  阅读(8)  评论(0)    收藏  举报