走进GO语言基础语法 | 青训营

91 阅读4分钟

一、前言

day1主要是学习了GO语言的基础语法和基础的GO实践小项目,以下是上课所做的笔记和一些基础代码

二、GO发展历程

Go语言由Google开发,2009年发布第一个版本,以简洁高效闻名,广泛应用于后端服务、云计算等领域,受到欢迎。

据第一节课的授课老师讲解,字节内部已开始使用的是Python开发,后有少部分员工尝试使用GO解决Python后期带来的某些问题,有奇效后逐渐整个后端都尝试使用GO重构,最便在字节内部普及

三、GO语言优点

  1. 简洁易学:拥有简洁的语法和清晰的代码结构,易于学习和使用。
  2. 高效编译:采用静态编译,生成的可执行文件运行效率高。
  3. 并发支持:原生支持轻量级线程——Goroutine和通道——Channel,简化并发编程。
  4. 内存管理:具有自动垃圾回收机制,无需开发者手动管理内存,降低了错误的风险。
  5. 跨平台支持:支持多种操作系统和硬件架构,便于开发跨平台应用。
  6. 静态类型:属于静态类型的编程语言,有助于减少运行时错误。
  7. 生态系统:拥有丰富的标准库和活跃的开发者社区,为开发者提供了强大的工具和资源。

总体来说,Go语言的优势在于其简洁高效、并发支持、内存管理和跨平台性,使其成为一门优秀的编程语言,适用于各种应用场景。

四、基础及语法分析

Go 语言切片(Slice)

Go 语言切片是对数组的抽象。

Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。


定义切片

你可以声明一个未指定大小的数组来定义切片:

var identifier []type

切片不需要说明长度。

或使用 make()  函数来创建切片:

var slice1 []type = make([]type, len)

也可以简写为

slice1 := make([]type, len)

也可以指定容量,其中 capacity 为可选参数。

make([]T, length, capacity)

这里 len 是数组的长度并且也是切片的初始长度。

切片初始化

s :=[] int {1,2,3 } 

直接初始化切片,[] 表示是切片类型, {1,2,3}  初始化值依次是 1,2,3,其 cap=len=3

s := arr[:] 

初始化切片 s,是数组 arr 的引用。

s := arr[startIndex:endIndex] 

将 arr 中从下标 startIndex 到 endIndex-1 下的元素创建为一个新的切片。

s := arr[startIndex:] 

通过内置函数 make()  初始化切片s[]int 标识为其元素类型为 int 的切片。


len() 和 cap() 函数

切片是可索引的,并且可以由 len() 方法获取长度。

切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。

空(nil)切片

一个切片在未初始化之前默认为 nil,长度为 0;

切片截取

可以通过设置下限及上限来设置截取切片  [lower-bound:upper-bound]

五、总结感悟

学习Go语言的基础语法是我作为初学者的第一步,也是掌握这门语言的基石。在学习过程中,我有以下思考和感悟:

  1. Go语言的语法设计简洁而不失功能强大,代码量相对较少,使得阅读和理解代码变得容易。这种简洁性让我更专注于解决问题本身,而不是纠结于语法细节。
  2. Go语言天生支持并发编程,Goroutine和Channel的概念给我带来了全新的思维方式。学习如何合理地使用并发,避免竞态条件和死锁,是我在学习过程中的一个挑战。
  3. Go语言中没有传统的异常机制,而是使用返回值来处理错误。这让我更加注重对错误的处理和预防,养成良好的错误处理习惯,以保证程序的稳定性。
  4. 学习资源的重要性:在学习过程中,我发现了大量优质的学习资源,包括官方文档、在线教程、书籍和开源项目等。合理利用这些资源,可以加速学习进度,提高学习效率。

总的来说,学习Go语言的基础语法是一次有意义的经历。通过不断练习和实践,我逐渐掌握了Go语言的特点和优势,并在实际项目中应用它。我相信,不断深入学习和实践,我会在Go语言的世界中获得更多的成长和收获。