🎬 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!") // 调用函数 }关键点:
包导入:使用
import关键字。导入未使用的包会导致编译错误。代码块:
{不能单独放在一行,否则会编译错误。语句结束:Go 默认以换行符作为语句结束,无需分号(
;)。同一行写多条语句时才需分号分隔。
2. 变量与常量
变量声明
Go 是静态类型语言,但支持类型推断。
声明方式 | 语法 | 说明 |
|---|---|---|
标准声明 |
| 显式指定类型,适用于全局和局部变量 |
类型推断 |
| 编译器根据初始值推断类型 |
短变量声明 |
| 仅限函数内部,最常用 |
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 的数据类型丰富,下表列出了基本类型及其特点:
类别 | 类型 | 说明 | 取值范围/示例 |
|---|---|---|---|
布尔型 |
| 逻辑值 |
|
整型 |
| 有符号整数 | 例如 |
| 无符号整数 | 例如 | |
| 平台相关,通常为64位 | 取决于系统 | |
浮点型 |
| IEEE-754 标准浮点数 | 例如 |
复数型 |
| 实部+虚部 |
|
字符串 |
| 不可变的UTF-8字符序列 |
|
类型转换: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. 关键特性与编码规范
可见性:标识符(变量、函数、类型等)首字母大写表示可被其他包访问(公开),小写则表示包内私有。
错误处理:倾向于使用多返回值返回错误而非抛出异常,鼓励显式检查错误。
代码风格:
使用gofmt 工具自动格式化代码,统一风格。
推荐使用驼峰命名法。
注释支持
//(单行)和/* ... */(多行)。
7. 更多复合类型
除了上述基础,Go 还有强大的复合类型,它们是构建复杂程序的基石:
数组(Array) 与切片(Slice):用于存储一组同类型数据。数组长度固定,切片长度可变,更常用。
映射(Map):键值对集合。
结构体(Struct):自定义的复合数据类型,将多个不同类型的字段组合在一起。
接口(Interface):定义行为契约,为 Go 语言提供了强大的抽象和多态能力。
这些内容会在你进一步学习时深入接触。
希望这份梳理能帮助你快速上手 Go 语言。实践是最好的老师,尝试用这些基础语法编写一些小程序,你会掌握得更牢固!
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙