Go 语言入门指南:基础语法和常用特性解析| 青训营

91 阅读4分钟

Go语言的特点

  • 简单易学: Go语言的语法简洁清晰,与C语言风格相似,易于学习和掌握。
  • 高性能、并发编程: Go语言原生支持并发编程,采用了轻量级的Goroutine并发模型和Channel通信机制,使得编写并发程序变得更加简单和高效。Go语言具备良好的性能,它的编译器将Go代码编译为机器码,且在运行时使用垃圾回收机制来管理内存,有效地提高了程序的执行效率。
  • 完善的工具链: Go语言内置了丰富的工具集,包括格式化工具、测试工具、性能分析工具等,开发者可以方便地进行代码格式化、单元测试和性能借助于这些标准库,开发者可以更快地构建出高效、可靠和安全的应用程序。此外,Go语言社区也提供了丰富的第三方包,可供开发者使用和扩展。优化等操作。
  • 丰富的标准库: Go语言的标准库是它的一个重要特点,它提供了许多功能丰富和易于使用的包,涵盖了各个领域。借助于这些标准库,开发者可以更快地构建出高效、可靠和安全的应用程序。此外,Go语言社区也提供了丰富的第三方包,可供开发者使用和扩展。
  • 跨平台支持:Go语言支持多种主流操作系统和硬件架构,可以编译生成可执行文件,无需依赖其他库或运行环境,便于在不同平台上部署和运行。
  • 垃圾回收:Go语言通过垃圾回收机制自动管理内存,避免了常见的内存错误,如内存泄漏和野指针,提高了程序的安全性和稳定性。
  • 静态链接:Go语言是一种静态类型语言,编译器会在编译阶段进行类型检查,可以提早发现潜在的类型错误,减少运行时的错误。
  • 快速编译:Go语言具有快速的编译速度,这是由于Go编译器的设计和优化带来的。
  • 变量

var + 变量名 + 变量类型 (在Go语言中变量类型在变量名后面)

使用步骤 :

  1. 变量的声明

  2. 变量的赋值

  3. 变量的使用

12345678910111213141516package main ``import ( ``"fmt" ) ``func main() { ``// 变量的声明 ``var A ``int // 变量的赋值 `` A = ``18 // 变量的使用 ``fmt.``Println``(``"A = "``, A) ``}``// var 可以自己判断变量类型``var B = ``18``// 省略var 用:=`` C := ``"Hello World"

每个类型有默认值,如果不对变量进行赋值,变量的值为默认值

  • 数据类型

在Go语言中,有几种基本的数据类型可以用来存储不同种类的数据。下面是常见的基本数据类型:

  • 整数类型(int) :用于表示整数值,包括有符号和无符号的整数类型。例如:intint8int16int32int64uintuint8uint16uint32uint64等。
  • 浮点数类型(float) :用于表示小数值,有两种精度的浮点数类型:float32float64
  • 布尔类型(bool) :用于表示逻辑值,只有两个取值:truefalse
  • 字符串类型(string) :用于表示文本,使用双引号或反引号将文本括起来。例如:“Hello, Go!”。
  • 字符类型:用于表示单个字符,使用单引号将字符括起来。例如:‘A’。
  • 指针类型:用于存储变量的内存地址,指向变量所在的内存空间。
  • 数组类型:用于存储固定长度的相同类型元素的集合。
  • 切片类型:用于存储可变长度的相同类型元素的序列。
  • 映射类型:用于存储键值对集合,类似于字典。
  • 结构体类型:用于定义自定义的复合数据类型,可以包含不同类型的字段。
  • 函数

提高代码的复用性和维护性,减少代码冗余

1234567//函数的声明`` ``func 函数名 (形参列表)(返回值类型列表){``    ``执行语句``    ``return + 返回值列表``}``//函数的调用``函数名 + (形参``1``,形参``2``,...)

注意

函数名 首字母大写,可以在本包文件和其它包文件访问(类似public)

函数名 首字母小写,只能被本包文件访问(类似private)

Go语言函数可以有多个返回值

Go语言函数是一种数据类型赋值给变量,也可以当成其它函数是形参和返回

Go语言中函数不支持重载,但支持可变参数

1234567891011package main``// 定义一个函数,函数参数为: 可变参数名 + ... + 参数类型``func test (num...``int``){``    ``//函数内部将可变参数当作切片处理``}``func main(){``    ``test()``    ``test(``1``)``    ``test(``2``,``28``,``30``)``    ``test(``2``,...,``100``)``}