news 2026/4/3 4:40:14

HoRain云--Go语言核心语法全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Go语言核心语法全解析

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

1. 程序结构

2. 变量与常量

变量声明

常量

3. 基本数据类型

4. 流程控制

条件语句 if

循环语句 for

选择语句 switch

5. 函数

6. 关键特性与编码规范

7. 更多复合类型


Go 语言以其简洁的语法和强大的性能深受开发者喜爱。下面我将为你梳理其核心语法要点,并通过表格和代码示例进行说明。

1. 程序结构

每个 Go 程序都始于包声明。可执行程序必须位于main包中,并包含一个main函数作为入口点。

package main // 声明包名 import "fmt" // 导入标准库包 func main() { // 程序入口 fmt.Println("Hello, World!") // 调用函数 }

关键点:

2. 变量与常量

变量声明

Go 是静态类型语言,但支持类型推断。

声明方式

语法

说明

标准声明

var 变量名 类型 = 值

显式指定类型,适用于全局和局部变量

类型推断

var 变量名 = 值

编译器根据初始值推断类型

短变量声明

变量名 := 值

仅限函数内部,最常用

var globalVar string = "I'm global" // 包级变量 var name = "Alice" // 类型推断 age := 25 // 短变量声明,函数内使用 a, b := 10, 20 // 同时声明多个变量

零值机制:声明但未初始化的变量会自动赋予其类型的零值(如 int 为 0,string 为 "",bool 为 false)。

常量

使用const关键字声明,定义后不可修改。

const Pi = 3.14159 const ( StatusOK = 200 StatusNotFound = 404 )

3. 基本数据类型

Go 的数据类型丰富,下表列出了基本类型及其特点:

类别

类型

说明

取值范围/示例

布尔型

bool

逻辑值

truefalse

整型

int8,int16,int32(rune),int64

有符号整数

例如int8: -128 到 127

uint8(byte),uint16,uint32,uint64

无符号整数

例如uint8: 0 到 255

int,uint

平台相关,通常为64位

取决于系统

浮点型

float32,float64

IEEE-754 标准浮点数

例如float32: -3.4e38 ~ 3.4e38

复数型

complex64,complex128

实部+虚部

var c complex64 = 3 + 4i

字符串

string

不可变的UTF-8字符序列

"Hello"`可换行`

类型转换:Go 要求显式类型转换,不支持隐式转换。

var i int = 42 var f float64 = float64(i) // 必须显式转换

4. 流程控制

条件语句if

条件表达式无需括号(),但代码块的花括号{}必须。

score := 85 if score >= 90 { fmt.Println("优秀") } else if score >= 60 { // else if 必须紧贴在上一个代码块的 } 之后 fmt.Println("合格") } else { fmt.Println("不及格") } // if 支持在条件前执行一个简单的语句(通常是变量初始化) if value, err := doSomething(); err != nil { fmt.Println("出错:", err) } else { fmt.Println("成功:", value) }

循环语句for

Go 只有for一种循环关键字,可模拟其他语言的while

// 1. 传统三段式(初始化;条件;后续操作) for i := 0; i < 5; i++ { fmt.Println(i) } // 2. 仅条件(类似while) sum, i := 0, 1 for i <= 100 { sum += i i++ } // 3. 无限循环 for { if condition { break // 跳出循环 } if otherCondition { continue // 跳过本次循环,进入下一次 } }

选择语句switch

比一连串的if-else更清晰。默认每个case自动break,如需继续执行下一 case,需使用fallthrough

day := "Monday" switch day { case "Monday": fmt.Println("周一") // 默认break,不会执行下一个case case "Tuesday", "Wednesday": // 一个case可匹配多个值 fmt.Println("周二或三") default: fmt.Println("其他日子") } // switch 后可不跟表达式,直接在 case 中写条件 score := 85 switch { case score >= 90: fmt.Println("A") case score >= 80: fmt.Println("B") default: fmt.Println("C") }

5. 函数

函数以func关键字声明,支持多返回值,这是 Go 错误处理的常用方式。

// 基本格式:func 函数名(参数列表) (返回值列表) { 函数体 } func divide(a, b float64) (float64, error) { if b == 0 { return 0, fmt.Errorf("除数不能为零") // 多返回值,常用于返回结果和错误 } return a / b, nil // nil 表示没有错误 } // 调用 result, err := divide(10, 2) if err != nil { log.Fatal(err) } fmt.Println(result)

6. 关键特性与编码规范

  1. 可见性:标识符(变量、函数、类型等)首字母大写表示可被其他包访问(公开),小写则表示包内私有。

  2. 错误处理:倾向于使用多返回值返回错误而非抛出异常,鼓励显式检查错误。

  3. 代码风格

7. 更多复合类型

除了上述基础,Go 还有强大的复合类型,它们是构建复杂程序的基石:

这些内容会在你进一步学习时深入接触。

希望这份梳理能帮助你快速上手 Go 语言。实践是最好的老师,尝试用这些基础语法编写一些小程序,你会掌握得更牢固!

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 15:35:00

基于51单片机智能农业温湿度 大棚灌溉 监测物联网成品设计定做成品

目录51单片机智能农业温湿度监测系统概述核心功能模块成品定制选项典型应用场景开发注意事项源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;51单片机智能农业温湿度监测系统概述 基于51单片机的智能农业系统集成温湿度监测、自动灌溉和…

作者头像 李华
网站建设 2026/4/1 22:03:17

Qwen3-1.7B插件开发避坑指南,这些错误别再犯

Qwen3-1.7B插件开发避坑指南&#xff0c;这些错误别再犯 Qwen3-1.7B作为通义千问系列中轻量高效、开箱即用的明星模型&#xff0c;在本地部署和插件扩展场景中被大量开发者选用。但实际开发过程中&#xff0c;80%以上的集成失败并非模型能力不足&#xff0c;而是卡在几个高频、…

作者头像 李华
网站建设 2026/4/1 5:41:50

超详细版ESP32固件库下载步骤(智能家居专用)

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。我以一位深耕嵌入式系统多年、长期从事智能家居产品量产落地的工程师视角&#xff0c;彻底重写了全文—— 去除所有AI腔调、模板化表达和教科书式分节 &#xff0c;代之以真实开发现场的语言节奏、踩坑经验…

作者头像 李华
网站建设 2026/3/15 12:38:15

利用USBlyzer诊断通信故障:实战案例定位问题根源

以下是对您提供的博文《利用USBlyzer诊断通信故障&#xff1a;实战案例定位问题根源》的 深度润色与优化版本 。本次改写严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、专业、有“人味”&#xff0c;像一位资深嵌入式系统工程师在技术博客中娓娓…

作者头像 李华
网站建设 2026/4/2 18:23:39

Pspice用户自定义器件库设计操作指南

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。全文已彻底去除AI腔调、模板化表达和生硬章节标题&#xff0c;转而采用一位资深电路仿真工程师在技术博客中自然分享的口吻——逻辑层层递进、语言精准克制、细节源于实战&#xff0c;并强化了“为什么这么做…

作者头像 李华