go | 环境安装和快速入门

环境搭建与第一个程序

1. 安装与配置

  • 下载 SDK:前往 Golang 官网或国内镜像下载对应系统的安装包。

网站:https://go.dev/dl/

  • 配置环境变量 :这是关键一步,配置好后才能在任意目录使用 go 命令。
    • GOROOT:SDK 的安装路径,例如 D:\Program Files\Go
    • GOPATH:你的工作目录,存放项目代码的地方。
    • PATH:添加 %GOROOT%\bin,让系统能找到 Go 的可执行文件。

2. 第一个 Go 程序

在你的 GOPATH 下创建 hello.go 文件,输入以下代码:

Go 复制代码
package main

import "fmt"

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

代码解析:

  • package main:声明这是一个主包,程序的入口。
  • import "fmt":引入格式化输入输出包。
  • func main():主函数,程序从这里开始执行。
  • fmt.Println():打印内容到控制台。

编译运行:

打开终端(Windows 下是 CMD 或 PowerShell),进入文件所在目录,执行:

  • go build hello.go:编译生成可执行文件(如 hello.exe),然后运行 hello.exe
  • 或者直接 go run hello.go:一键编译并运行。

核心基础:变量与数据类型

Go 是强类型语言,变量使用前必须先声明。

1. 变量声明与赋值

Go 推荐使用 驼峰命名法。声明变量有多种方式:

Go 复制代码
// 方式1:指定类型,先声明后赋值
var age int
age = 18

// 方式2:类型推导,根据值自动判断类型
var name = "Alice" 

// 方式3:短变量声明,仅限函数内部使用
address := "Shenzhen"

2. 基本数据类型

  • 整数类型int8, int16, int32, int64。通常直接用 int,系统会自动匹配 32 位或 64 位。
  • 浮点类型float32, float64。Go 默认使用 float64,因为精度更高。
  • 字符类型 :Go 中没有专门的 char 类型,通常用 byte(保存 ASCII)或 int(保存 Unicode)来存储。
  • 字符串类型:Go 使用 UTF-8 编码,完美支持中文。字符串一旦赋值不可变,但可以进行拼接。
  • 布尔类型bool,只有 truefalse 两个值。

3. 数据类型转换

Go 不支持自动类型转换,必须显式转换。

Go 复制代码
var a int64 = 100
var b int32 = 20
// a + b 会报错,必须转换成同一类型
var sum = a + int64(b) 

流程控制:让代码"动"起来

程序的逻辑控制主要靠流程控制语句。

1. 条件判断 (if-else)

Go 的 if 语句条件不需要括号,且支持在条件前执行一个简单语句。

Go 复制代码
if score := 85; score >= 90 {
    fmt.Println("优秀")
} else if score >= 60 {
    fmt.Println("及格")
} else {
    fmt.Println("不及格")
}

2. 分支选择 (switch)

Go 的 switch 非常灵活,不需要写 break,默认自带。如果想继续执行下一个 case,可以使用 fallthrough

Go 复制代码
switch day := "Monday"; day {
case "Saturday", "Sunday": // 可以合并多个值
    fmt.Println("周末")
case "Monday":
    fmt.Println("工作日")
default:
    fmt.Println("未知")
}

3. 循环 (for)

Go 只有 for 一种循环关键字,但它能实现所有循环功能。

Go 复制代码
// 标准 for 循环
for i := 0; i < 10; i++ {
    fmt.Println(i)
}

// while 循环的实现
j := 0
for j < 5 {
    fmt.Println(j)
    j++
}

// 无限循环
for {
    // do something
    break // 需要手动 break
}

函数与包管理

当代码量变大时,我们需要函数和包来组织代码。

1. 函数定义

Go 函数可以返回多个值,这是非常实用的特性。

Go 复制代码
// 函数定义:计算和与差
func calc(n1, n2 int) (int, int) {
    sum := n1 + n2
    sub := n1 - n2
    return sum, sub
}

// 调用函数
s, d := calc(10, 5)
fmt.Println("和:", s, "差:", d)

2. 包 (package)

  • 定义包 :每个文件开头都要写 package 包名
  • 导入包 :使用 import "包路径"
  • 可见性首字母大写 的变量或函数是公开的 (可被其他包访问),首字母小写是私有的(仅本包可用)。

复合数据类型:数组、切片与 Map

除了基本类型,我们还需要处理复杂数据。

1. 数组 (Array)

长度固定,定义时必须指定大小。

Go 复制代码
var arr [3]int = [3]int{1, 2, 3}

2. 切片 (Slice)

切片是数组的引用,长度可变,是 Go 中最常用的数据结构。

Go 复制代码
// 方式1:基于数组创建
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:3] // 引用 arr 的第1到第2个元素

// 方式2:使用 make 创建
slice2 := make([]int, 3, 10) // 类型,长度,容量

3. Map (键值对)

类似其他语言的字典或哈希表。

Go 复制代码
// 声明并初始化
heroes := map[string]string{
    "hero1": "宋江",
    "hero2": "卢俊义",
}

// 增加/修改
heroes["hero3"] = "吴用"

// 删除
delete(heroes, "hero1")

// 遍历
for key, value := range heroes {
    fmt.Println(key, value)
}

特色语法:指针与结构体

Go 语言保留了指针,但比 C 语言更安全。

1. 指针

  • &:取地址。
  • *:取值(解引用)。
Go 复制代码
var a int = 10
var p *int = &a // p 存储了 a 的地址
fmt.Println(*p) // 输出 10,取 p 指向的值

2. 结构体 (struct)

Go 语言没有类 (class),而是使用结构体来组合数据,实现面向对象编程。

Go 复制代码
// 定义一个 Person 结构体
type Person struct {
    Name string
    Age  int
}

// 创建结构体实例
p1 := Person{Name: "Bob", Age: 25}
fmt.Println(p1.Name) // 输出 Bob
相关推荐
Darren2451 小时前
流程步骤模板 - @StepStatus 注解方案
后端
yuan199971 小时前
欧拉梁静力与屈曲计算的 MATLAB 实现(有限差分法 + 解析解)
开发语言·算法·matlab
llxxyy卢1 小时前
polar夏季赛部分题目
开发语言·python
AI玫瑰助手1 小时前
Python模块:from...import...导入指定内容
开发语言·python·信息可视化
石山代码1 小时前
JavaScript 进阶核心知识点
开发语言·javascript·ecmascript
小闹5491 小时前
Claude Code 给自己接了一部飞书,从此不用守在工位等它
后端·claude
FL16238631292 小时前
[cmake]基于C++使用纯opencv部署ppocrv5v6的onnx模型
开发语言·c++·opencv
浮游本尊2 小时前
Java学习第41天 - 复杂查询、多表关联、索引优化与慢 SQL 调优
后端