Go语言既能达到静态语言的安全和性能,又达到了动态语言开发维护的高效,使用一个表达式来形容Go语音(Go = C + Python),说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。
- 从C语言中继承了很多理念,包括表达式语法、控制结构、基础数据类型、调用参数传值、指针(弱化指针)等,也保留了和C语言一样的编译执行方式。
- 函数可以返回多个值
- 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
- 垃圾回收机制,内存自动回收,不需要开发人员管理。
- 天然并发
- 从语言层面支持并发,实现简单
- goroutine,轻量级线程,可实现大并发处理,高效利用多核
- 基于CPS并发模型实现
- 吸收了管道通信机制,形成Go语言特有的channel,通过管道channel,可以实现不同的goroute之间的相互通信
- 新的创新,比如切片slice,延时执行defer等
变量声明的三种方式:
var i int
var i, j int
var i = 10
var i, j = 10, "str"
i := 10
i, j := 110, "str"
在全局作用域下一次性声明多个变量:使用var( )的形式
var (
x = 50
y = "sdf"
)
标识符的命名规则:
- 由字母、数字、下划线组成(数字不能开头)
- 下划线本身在Go中是一个特殊的标识符,成为“空标识符”,可以代表任何其他的标识符,但是它对应的值会被忽略(比如忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用。
标识符命名注意事项:
- 包名和文件名保持一致,尽量采取有意义的包名,简短,有意义,不要和标准库冲突。
- 变量名,函数名,常量名采用驼峰法。
- 如果变量名,函数名,常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用(Go语言的特性,因为Go语音没有public,private,protect等概念)
系统保留关键字
break | default | func | interface | select |
---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
预定标识符
append | bool | byte | cap | close | complex |
---|
complex64 | complex128 | uint16 | copy | false | float32 |
float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | itoa | len | make | new |
nil | panic | uint64 | print | println | real |
recover | string | true | uint | uint8 | uintptr |