Go 语言入门、实战案例与拓展(理论篇)| 青训营

72 阅读3分钟

注:本篇文章将结合本人之前的学习经历进行描述,可能存在大量个人习惯,还请见谅,也欢迎提出见解!

基础语法

Go 语言是由谷歌开发的一种现代化、高效率的编程语言。它以其简洁而强大的语法而闻名,并具有出色的并发处理能力。

变量声明和赋值

在 Go 语言中,我们可以使用 var 关键字来声明变量。例如,var x int 将声明一个名为 x 的整数型变量。我们还可以使用短变量声明方式:x := 10,这样可以同时声明并初始化变量。

image.png

注意,对全局变量的赋值需要用 =,不能加上冒号,否则在其他包中无法正确读取到该值;且不能定义未使用到的局部变量。

image.png

image.png

image.png 如果去掉冒号:

image.png

控制流结构

Go 语言提供了常见的控制流结构,如条件语句(if-else)、循环语句(for)和选择语句(switch)。通过灵活运用这些语句,我们可以根据不同的情况来执行相应的代码块。

image.png

函数定义和调用

在 Go 语言中,函数是组织代码的基本单元。我们可以使用关键字 func 来定义函数,例如:

image.png

此时,a 与 b 均为int 类型。括号外的 int 表示返回值类型。

数据类型和结构体

Go 语言支持多种基本数据类型,如整数、浮点数、布尔值和字符串。此外,我们还可以使用结构体来定义自己的复杂数据类型。

image.png

注意:同一个包内,不能定义同名结构(同名数据类型)

数组和切片

数组是一种固定长度的数据结构,而切片则是动态大小的数组。切片在 Go 语言中非常常见,因为它们提供了更大的灵活性和便利性。

image.png

常用特性

并发处理

Go 语言以其出色的并发处理能力而闻名。通过 goroutine 和 channel 的结合,我们可以轻松实现高效的并发编程。同时,标准库中还提供了丰富的工具和机制来支持并发操作。

image.png

image.png

如果去掉 Sleep 方法,则会:

image.png

错误处理

在编写可靠的软件时,良好的错误处理机制至关重要。Go 语言采用了简洁而有效的错误处理模式,通过返回错误对象和使用 defer 关键字来确保资源的释放与清理。

image.png

定义了一个 divide 函数,用于执行除法运算。如果除数为零,函数将返回一个非空的错误对象;否则,它将返回计算结果和一个空的错误对象。

在主函数中,我们调用 divide 函数,并通过检查返回的错误来判断是否发生了错误。如果错误不为空,则输出错误信息;否则,打印结果。

包管理

Go 语言具有强大的包管理功能,使得代码的组织和复用变得更加简单。我们可以使用 import 关键字导入其他包,并通过适当的封装来提供公共接口。

对比与总结

本人目前的技术栈为 .NET,经过一段时间对 GO 的了解后,发现 GO 和 C# 的差异还是很大,不像 C# 与 JAVA。不管是语法、命名空间/包、还是定义规则、命名规则等,基本完全不同。尤其是与命名空间的管理/包的管理,C# 中每个命名空间下的文件是独立的,可以存在同名的数据类型,而 GO 不行,一个包下文件并不独立。

这样有好有坏,好处就是,同一个包下的内容无需引用,坏处就是可能会导致莫名其妙的重复报错,同样一名称不同字段的数据类型无法定义,不过各有千秋。