当前位置: 首页 > 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.jsqmd.com/news/1025346/

相关文章:

  • Camera Link 与 CoaXPress 技术对比 如何选择你的相机接口 - Hello
  • 2026年企业即时通讯软件怎么选?十款企业IM部署、安全与协同能力对比 - 小天互连即时通讯
  • 福州电视闪屏维修指南:简单到家工程师自检清单与避坑指南 - 简单到家
  • 终极指南:如何通过AES密钥解密《鸣潮》模组开发
  • 亚马逊内部数据曝光:6 个工程师 76 天干了 30 人一年半的活,AI 编程五原则拆解
  • 终极指南:如何使用HunterPie让《怪物猎人:世界》数据透明化,告别盲目狩猎!
  • Nano Banana Pro:专业级AI图像生成的四大底层突破
  • 2026年宁波减肥训练营2026宁波封闭式减肥训练营深度实测:吃住全包 + 签约减重,东吴这家营地凭实力打破行业乱象 - 速递信息
  • 海口家电维修平台服务对比:2026年行业数据驱动的消费决策参考 - 简单到家
  • 2026年廊坊漏水检测维修:认准廊坊君启房屋修缮,一个品牌统一定位更可靠 - 鲁顺
  • 2026年横评:16款降AI率工具测评,论文降重降ai率神器是这个! - 降AI小能手
  • 无锡哪家宠舍靠谱 7家实地探访给出答案 - 园友3800037
  • 公考线上课口碑机构盘点 不同预算需求适配指南 - 速递信息
  • 刑事风险防控律师事务所排名:四套企业风控体系选型评测 - 品牌2026
  • 2026阳江阳东地址挂靠靠谱代办TOP4推荐|正规合规挂靠避坑攻略 - 速递信息
  • OpenClaw本地AI工作流部署全解析:PowerShell、Ollama镜像与Qwen3.5:9b实战
  • 伺服电机仿真(48):高级专题与工程应用——电磁兼容性预测仿真
  • 【问答】青岛防水维修一般质保多久?不同部位质保标准参考 - 青岛防水品牌推荐
  • 购买美国商标在哪买?2026四大商标交易平台对比,附完整购买流程 - 速递信息
  • 云南专业车灯升级标杆!全车型灯光改装维修服务介绍 - 英特菲斯
  • 苏州本地宠物门店实测,选猫狗不只参考售价高低 - 园友3800037
  • 蜂窝数据和wifi通道切换
  • 【案例】青岛精装房墙角渗水,微创工艺修复不破坏装修 - 青岛防水品牌推荐
  • 基础-二分算法 -(二分答案 | 最小化最大值 | 最大化最小值 | 第K小)-持续更新中
  • 杭州油烟机不抽油烟怎么办?简单到家自检清单与避坑指南 - 简单到家
  • 11804华夏之光永存:黄大年茶思屋榜文118期 第4题混响环境内的声场建模与控制技术
  • 合肥购宠优选 9家实体门店现场挑选更踏实 - 园友3800037
  • .NET Upgrade Assistant:从传统框架到现代平台的快速迁移指南
  • 解锁AI写专著密码!AI专著撰写工具,20万字专著快速成型!
  • 可靠的wordpress服务商