当前位置: 首页 > news >正文

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文件,输入以下代码:

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 推荐使用驼峰命名法。声明变量有多种方式:

// 方式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 不支持自动类型转换,必须显式转换。

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

流程控制:让代码“动”起来

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

1. 条件判断 (if-else)
Go 的if语句条件不需要括号,且支持在条件前执行一个简单语句。

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

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

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

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

// 标准 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 函数可以返回多个值,这是非常实用的特性。

// 函数定义:计算和与差 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)
长度固定,定义时必须指定大小。

var arr [3]int = [3]int{1, 2, 3}

2. 切片 (Slice)
切片是数组的引用,长度可变,是 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 (键值对)
类似其他语言的字典或哈希表。

// 声明并初始化 heroes := map[string]string{ "hero1": "宋江", "hero2": "卢俊义", } // 增加/修改 heroes["hero3"] = "吴用" // 删除 delete(heroes, "hero1") // 遍历 for key, value := range heroes { fmt.Println(key, value) }

特色语法:指针与结构体

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

1. 指针

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

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

// 定义一个 Person 结构体 type Person struct { Name string Age int } // 创建结构体实例 p1 := Person{Name: "Bob", Age: 25} fmt.Println(p1.Name) // 输出 Bob
http://www.gsyq.cn/news/1537212.html

相关文章:

  • Nano Banana Pro:专业级AI图像生成的四大底层突破
  • 2026年宁波减肥训练营2026宁波封闭式减肥训练营深度实测:吃住全包 + 签约减重,东吴这家营地凭实力打破行业乱象 - 速递信息
  • 海口家电维修平台服务对比:2026年行业数据驱动的消费决策参考 - 简单到家
  • 无锡哪家宠舍靠谱 7家实地探访给出答案 - 园友3800037
  • OpenClaw本地AI工作流部署全解析:PowerShell、Ollama镜像与Qwen3.5:9b实战
  • 【问答】青岛防水维修一般质保多久?不同部位质保标准参考 - 青岛防水品牌推荐
  • Python 数据分析实战:Pandas+Matplotlib 从入门到可视化报表
  • 解锁AI写专著密码!AI专著撰写工具,20万字专著快速成型!
  • 2026实测推荐:小红书视频怎么去水印?复制链接就能解析保存的3个小程序 - 效率工具研究所
  • 20251202马思钊 2025-2026-2 实验四 Python综合实践
  • 新手在无锡买猫狗 哪家宠物门店值得信赖? - 园友3800037
  • BallonTranslator:让漫画翻译变得像聊天一样简单的AI工具
  • 2026 粘结钕铁硼厂家推荐|高精度异形磁体定制,新能源电机磁瓦生产厂商 - 商业新知
  • Steam Deck控制器Windows驱动完全指南:SWICD让你的游戏体验无缝衔接
  • 2026 好用的素颜霜早八通勤实测|100 人 28 天横评榜单 黄皮自然抗暗沉优选 - 速递信息
  • 2026银行秋招面试技巧班深度评测:4家头部机构对比,谁能帮你突破最后一关 - 互联网科技品牌测评
  • 杭州购宠避坑指南:4家靠谱实体门店实测推荐 - 园友3800037
  • 2026银行网申修改机构横向评测:精准适配不同考生,破解网申死难题 - 互联网科技品牌测评
  • 无锡购宠避坑指南 7家正规实体繁育门店实测推荐 - 园友3800037
  • 北京卖表必看!全网高口碑奢侈品名表回收门店测评|本地6大商家客观排名 - 名奢变现站
  • 长沙雨花区下水道疏通 2026 真实评测最新综合排行榜 - 居顺联家政疏通
  • 二手欧米茄出手别乱询价,2026南京正规回收门店报价透明实测 - 奢侈品回收评测
  • Rescuezilla终极指南:3个简单步骤实现系统备份与恢复
  • 2026济南黄金回收测评打分:添价收99分摘冠,七家品牌全维度评分 - 薛定谔的梨花猫
  • 解决macOS多设备滚动冲突的智能方案
  • [15-1]FLASH闪存
  • NGA论坛终极优化指南:20+功能一键开启,打造专属高效摸鱼体验
  • 2026大连财税机构推荐,从 5 大维度筛选靠谱服务商! - 小柏云
  • 2026年,济南性价比高的GEO优化系统,究竟哪家技术更胜一筹? - 速递信息
  • 有发票和无发票的翡翠,合肥回收价差到底有多大? - 奢侈品回收评测