01_Go语言基础与环境搭建

第1课:Go语言基础与环境搭建

课程目标

  • 了解Go语言的历史和特点
  • 搭建Go开发环境
  • 理解Go语言的基本语法结构
  • 编写第一个Go程序

1. Go语言简介

1.1 历史背景

  • 2007年由Google开发
  • 2009年正式发布
  • 设计目标:解决大型软件开发的复杂性

1.2 主要特点(与Java对比)

特性 Go Java
编译方式 编译型 编译+解释型
内存管理 自动GC 自动GC
并发模型 goroutine + channel Thread + Executor
类型系统 静态类型 静态类型
包管理 go modules Maven/Gradle

1.3 适用场景

  • 微服务架构
  • 云原生应用
  • 网络服务
  • 系统工具

2. 环境搭建

2.1 安装Go

bash 复制代码
# Windows
# 下载安装包:https://golang.org/dl/
# 或使用包管理器
winget install GoLang.Go

# 验证安装
go version

2.2 配置环境变量

bash 复制代码
# 设置GOPATH(Go 1.11+推荐使用go modules)
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

# 设置GOPROXY(国内用户)
go env -w GOPROXY=https://goproxy.cn,direct

2.3 IDE选择

  • VS Code + Go扩展(推荐)
  • GoLand(JetBrains出品,功能强大)
  • Vim/Emacs + Go插件

3. 第一个Go程序

3.1 Hello World

go 复制代码
package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

3.2 程序结构解析

  • package main:声明主包
  • import "fmt":导入格式化包
  • func main():主函数(程序入口)

3.3 运行程序

bash 复制代码
# 直接运行
go run hello.go

# 编译后运行
go build hello.go
./hello.exe  # Windows
./hello      # Linux/Mac

4. Go语言基本语法

4.1 包管理

go 复制代码
// 单包导入
import "fmt"

// 多包导入
import (
    "fmt"
    "os"
)

// 别名导入
import f "fmt"
import _ "database/sql"  // 只执行init函数

4.2 变量声明

go 复制代码
// 显式类型声明
var name string = "Go"

// 类型推断
var age = 25

// 短变量声明(函数内)
func example() {
    count := 10
    fmt.Println(count)
}

// 批量声明
var (
    a int
    b string
    c bool
)

4.3 常量

go 复制代码
const (
    Pi = 3.14159
    Version = "1.0.0"
)

// iota(枚举)
const (
    Sunday = iota    // 0
    Monday           // 1
    Tuesday          // 2
)

5. 实践练习

5.1 练习1:变量和常量

go 复制代码
package main

import "fmt"

func main() {
    // 声明不同类型的变量
    var name string = "张三"
    var age int = 30
    var salary float64 = 15000.50
    
    // 使用短变量声明
    city := "北京"
    
    // 声明常量
    const company = "Go科技有限公司"
    
    // 输出信息
    fmt.Printf("姓名:%s\n", name)
    fmt.Printf("年龄:%d\n", age)
    fmt.Printf("薪资:%.2f\n", salary)
    fmt.Printf("城市:%s\n", city)
    fmt.Printf("公司:%s\n", company)
}

5.2 练习2:包导入练习

go 复制代码
package main

import (
    "fmt"
    "math"
    "time"
)

func main() {
    // 使用math包
    fmt.Printf("π的值:%.6f\n", math.Pi)
    fmt.Printf("2的平方根:%.6f\n", math.Sqrt(2))
    
    // 使用time包
    now := time.Now()
    fmt.Printf("当前时间:%s\n", now.Format("2006-01-02 15:04:05"))
}

6. 课后作业

  1. 环境搭建:完成Go环境安装和配置
  2. 第一个程序:编写并运行Hello World程序
  3. 变量练习:创建程序声明不同类型的变量和常量
  4. 包使用:尝试导入和使用不同的标准库包

7. 学习要点总结

  • Go语言是编译型语言,执行效率高
  • 包是Go语言的基本组织单位
  • 变量声明有多种方式,推荐使用短变量声明
  • 常量使用const关键字,支持批量声明
  • iota用于创建递增的常量序列

8. 下一课预告

下一课将学习Go语言的数据类型、控制结构和函数,这是Go语言编程的基础。


学习建议

  1. 多动手练习,不要只看代码
  2. 对比Java和Go的差异,加深理解
  3. 遇到问题及时查阅官方文档
  4. 保持代码的简洁性和可读性
相关推荐
沐知全栈开发15 分钟前
Python3 集合
开发语言
Jonathan Star40 分钟前
用Python轻松提取视频音频并去除静音片段
开发语言·python·音视频
Evand J1 小时前
【自适应粒子滤波MATLAB例程】Sage Husa自适应粒子滤波,用于克服初始Q和R不准确的问题,一维非线性滤波。附下载链接
开发语言·matlab·卡尔曼滤波·自适应滤波·非线性
九江Mgx1 小时前
Go语言实现的简易远程传屏工具:让你的屏幕「飞」起来
golang·截图·传屏
hd51cc1 小时前
C++ 类的学习(四) 继承
开发语言·c++·学习
紫荆鱼2 小时前
设计模式-命令模式(Command)
c++·后端·设计模式·命令模式
编码追梦人2 小时前
深耕 Rust:核心技术解析、生态实践与高性能开发指南
开发语言·后端·rust
2301_772093562 小时前
KVSTORE_Pain point_tuchuang_ROS2
java·开发语言·1024程序员节
刘火锅2 小时前
Java 17 环境下 EasyPoi 反射访问异常分析与解决方案(ExcelImportUtil.importExcelMore)
java·开发语言·python
朝新_2 小时前
【SpringBoot】详解Maven的操作与配置
java·spring boot·笔记·后端·spring·maven·javaee