Golang(又称为 Go)是 Google 公司开发出的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
1.Go 语言的特点
Go 语言保证了既能够达到 静态编译语言的安全和性能,又达到了 动态开发语言维护的高效率,使用一个表达式来形容 Go 语言:Go = C + Python,说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。
1)从 C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针 等等,也保留了和 C 语言一样的编译执行方式及弱化的指针。
1 2 3 |
|
2)引入 包的概念,用于组织程序结构,Go 语言的 一个文件都要归于一个包,而不能单独存在。
1 2 3 4 5 |
|
3)垃圾回收机制,内存自动回收,不需要开发人员管理。
4)天然并发:从语言层面上支持并发,实现简单;goroutine
轻量级线程,可实现大并发处理,高效利用多核;基于 CPS 并发模型实现。
5)吸收了 管道通信机制,形成 Go 语言特有的管道 Channel
,通过管道 Channel
,我们可以实现不同 goroute
间的互相通信。
6)函数可以返回多个值:
1 2 3 4 5 |
|
7)新的创新,比如:Slice
切片,Defer
延时执行等。
2.Golang 的变量作用域
局部变量: 在函数内部定义的变量,作用域仅限于函数内部(首字母是大写的也不行)
全局变量: 在函数外部定义的变量,作用域在整个包都有效。
但是当变量在代码块中定义时,比如 if
for
中,那么这个变量的作用域就在该代码块中有效。
还有一个就是:赋值语句是不能定义在函数体外的,如:这种 name := "zhangsan"
,我们换成 var name string = "zhangsan"
即可。
3.Golang 执行流程的两种方式
先编译,在执行: go build -o Hello.exe test.go
(编译完后可以到处运行,但是编译后文件会较大)
直接运行: go run test.go
(直接运行,速度相对来说要比先编译的较慢,需要依赖 Go 环境)
PS:Go 语言 定义的变量 或者 import
包,如果没有使用放到,代码是不能编译通过的。