news 2026/2/2 5:53:30

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/2/3 2:31:50

fft npainting lama输出路径设置说明,文件不丢失

fft npainting lama输出路径设置说明&#xff0c;文件不丢失 1. 问题背景&#xff1a;为什么修复结果会“消失”&#xff1f; 你是否遇到过这样的情况&#xff1a;点击“ 开始修复”后&#xff0c;右上角状态栏明明显示“完成&#xff01;已保存至: /root/cv_fft_inpainting_…

作者头像 李华
网站建设 2026/1/30 19:25:45

Qwen3-Embedding-0.6B使用心得:适合中小企业的AI工具

Qwen3-Embedding-0.6B使用心得&#xff1a;适合中小企业的AI工具 你是不是也遇到过这些情况&#xff1f; 客服团队每天要翻几十页产品文档才能回答一个客户问题&#xff1b; 销售同事花两小时整理竞品资料&#xff0c;却还是漏掉关键信息&#xff1b; HR筛选上百份简历&#x…

作者头像 李华
网站建设 2026/2/1 4:40:25

Z-Image-Turbo_UI界面避坑指南:新手常见问题全解答

Z-Image-Turbo_UI界面避坑指南&#xff1a;新手常见问题全解答 刚点开 Z-Image-Turbo_UI 界面时&#xff0c;你可能盯着那个灰白底色的网页发愣&#xff1a;按钮在哪&#xff1f;输入框怎么用&#xff1f;点了“Generate”却没反应&#xff1f;生成的图去哪了&#xff1f;为什…

作者头像 李华
网站建设 2026/1/30 8:51:47

触发器在流水线设计中的角色:高性能架构理解要点

以下是对您提供的技术博文《触发器在流水线设计中的角色&#xff1a;高性能架构理解要点》的 深度润色与优化版本 。本次改写严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹 &#xff1a;语言自然、有“人味”&#xff0c;像一位深耕数字前端多年的架构师/IC验证专家…

作者头像 李华
网站建设 2026/2/1 21:08:13

Arduino实现LED灯PWM调光:新手入门必看

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。整体风格更贴近一位资深嵌入式工程师在技术社区中自然分享的经验总结—— 去AI感、强逻辑、重实操、有温度 &#xff0c;同时严格遵循您提出的全部优化要求&#xff08;无模板化标题、无“引言/总结”段落、…

作者头像 李华