-
Golang的简介
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。
-
Golang的优点
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
基于以上优点,Golang广泛用于国内外各大互联网公司,如字节跳动、腾讯、美团、滴滴、百度、谷歌、脸书等公司。
基础语法
一、变量类型 Go 语言拥有简洁明了的变量类型定义方式,包括基本数据类型如整数、浮点数、布尔值等,以及复合数据类型如数组、切片、映射等。不同的变量类型在存储和操作数据方面具有各自的特点和优势,开发者可以根据具体的需求选择合适的变量类型。
二、控制流语句
- if-else 语句:与 C 语言相比,Go 语言的 if-else 语句没有括号,且 if 后面必须接大括号。这种语法设计使得代码更加清晰易读,减少了不必要的括号嵌套。
- switch 语句:Go 语言的 switch 语句功能更加强大,可以使用任意的变量类型。它可以根据不同的条件执行不同的代码块,并且可以省略 break 语句,默认情况下会自动跳出当前 case 分支。此外,switch 语句还可以支持表达式和类型断言等高级用法。
- for 循环:Go 语言中只有唯一的一种 for 循环,用法与 C 语言类似。它可以用于遍历数组、切片、映射等数据结构,也可以用于执行固定次数的循环。for 循环的语法简洁高效,能够满足各种循环需求。
三、数据结构
-
数组:数组是一组具有相同类型的元素的集合,它们在内存中是连续存储的。数组的长度是固定的,一旦创建就不能改变。数组可以通过索引访问其中的元素,索引从 0 开始。
-
切片:切片是对数组的一种引用类型,它可以动态地改变长度。切片的底层是一个数组,它通过指向数组的指针、长度和容量来表示。切片可以通过切片表达式从数组或其他切片中创建,也可以使用内置函数 make 创建。切片的操作更加丰富,可以进行切片、拼接、复制等操作。
-
映射(map):map 是一种无序的键值对集合,它使用哈希表实现快速的查找和插入操作。map 可以使用 make 函数创建一个空 map,用到的两个类型一个为 key 的类型,另一个为 value 的类型。遍历 map 时是完全无序的,因为哈希表的存储顺序是不确定的。
四、遍历和迭代
-
range:range 关键字可以快速遍历 slice 或 map。对于数组,range 会返回索引值与对应位置的值;对于切片,range 会返回索引值和元素值;对于 map,range 会返回键值对。
五、函数
-
语法特点:在 Go 语言中,函数的变量类型是后置的,这种语法设计使得函数定义更加清晰易读。函数原生支持返回多个值,可以方便地返回结果和错误信息。
-
错误处理:Go 语言的错误处理用一个单独的返回值来传递错误信息。这种方式使得错误处理更加清晰明了,能够清晰地知道哪个函数返回了错误。函数可以返回一个错误类型的值,如果没有错误发生,则返回 nil。
六、其他特性
-
字符串操作:Go 语言提供了丰富的字符串操作函数,包括字符串拼接、子串查找、字符串替换等。字符串在 Go 语言中是不可变的,一旦创建就不能修改。
-
字符串格式化:Go 语言的 fmt 包提供了强大的字符串格式化功能,可以将各种类型的数据格式化为字符串。字符串格式化使用类似于 C 语言的 printf 函数的语法,但是更加简洁和安全。
-
JSON 处理:Go 语言的 encoding/json 包提供了对 JSON 数据的编码和解码功能。可以将结构体、映射等数据类型编码为 JSON 格式的字符串,也可以将 JSON 格式的字符串解码为相应的数据类型。
-
时间处理:Go 语言的 time 包提供了对时间和日期的处理功能。可以获取当前时间、格式化时间、计算时间差等。
-
数字解析:Go 语言的 strconv 包提供了对数字字符串的解析功能。可以将数字字符串转换为整数、浮点数等类型。
-
进程信息:Go 语言的 os 包提供了对操作系统的一些操作功能,包括获取进程信息、执行系统命令等。
个人思考: 我本身学习过很多门语言,能够从这门语言中看出一些共同点,对于学习过一门语言的人(尤其是python)来说,很容易入门~