今天我们一起了解下go的语言特性和语言结构吧。
语言特性
简介: Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率。一个表达式来形容 Go 语言: Go=C+Python。说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。
- 与 C 语言一致的理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等,也保留了和 C 语言一样的编译执行方式及弱化的指针。 案例:接收一个指针,用*符号取得指针, 对所指向的值进行赋值操作。
1 | func testPtr(num*int){ |
- Go 语言的一个文件都要归属于一个包,而不能单独存在, 用于组织程序结构;否则无法编译。 案例:
1 | package main //一个go文件需要在一个包内 |
垃圾回收机制,内存自动回收,不需开发人员管理。程序员只关注业务逻辑。不像 C 语言,垃圾回收需要程序员自行管理,可能出现内存泄漏。
天然并发【重要特点】C 与 Java 比不上。云计算偏爱此语言的基础。
- 从语言层面支持并发,实现简单
- 引入轻量级线程-goroutine,可实现大并发处理,高效利用多核。
- 基于 CPS 并发模型(Communicating Sequential Processes )实现
- 吸收了管道通信机制,形成 Go 语言特有的管道 channel。通过管道 channel ,可以实现不同的 goroute之间的相互通信。
- 函数可以返回多个值。 案例:
1 | package main |
- 新创新:切片slide【类似Java集合】延时执行defer【函数执行完后,再执行某操作】等 8)错误处理,类型和接口,反射,语言交互性
语言结构
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
案例:
1 | package main |
解释:
- package main定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
- import "fmt"告诉编译器程序运行需要用fmt包。
- func main() 是程序开始执行的函数,main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
- {}中"{"不可以单独放一行。
- 注释在程序执行时将被忽略。//单行注释, /* ... */ 多行注释也叫块注释,不可以嵌套使用,一般用于包的文档描述或注释成块的代码片段。
- fmt.Println(...) 将字符串输出到控制台,并在最后自动增加换行字符 。用 fmt.Print("hello, world") 可以得到相同的结果。
参考
[1] https://www.bilibili.com/video/BV1ME411Y71o?p=6
[2] https://github.com/datawhalechina/go-talent/blob/master/0.Go初探.md