CSP(communicating sequential processes)
go 有i++ 没有–i,且i++是一个语句,不能被赋值,例如a = i++
go的格式要求非常严格。
go只有一种循环结构for
变量声明的几种方式
|
|
go提供指针,但不提供指针运算。
program structure
Names
25 keywords
|
|
|
|
函数内定义的变量,作用域为函数。函数外定义的变量,作用域为包内的所有文件。以大写字母开头的变量名,其作用域为整个程序。小写字母开头的变量名,其作用域为包。go中更喜欢驼峰风格。
Declarations
|
|
Variables
|
|
Short Variable Declarations:within a function, an alternate form called short variable declaration may be used to declare and initialize local variables.
|
|
|
|
短变量声明中不一定都是新的变量,如果其中的变量之前已经声明过,则仅仅是简单的赋值。若所有的变量都被声明过,则会报错。
Pointers
|
|
the new function
The expression new(T) creates an unnamed variable of type T, initializes it to the zero value of T, and return its address, which is a value of type *T.
|
|
lifetime of variables
全局变量的生命周期是整个程序运行期间,局部变量的生命周期是局部调用期间。不可达的变量将会被垃圾回收器回收。
编译器根据具体情况在堆上或者栈上申请变量内存。
Assignments
tuple assignments
Assignability
Type Declarations
新定义一种类型。类似C语言中的typedef
|
|
Packages and Files
每个源文件可以有个init函数,当程序执行时,init函数会按照声明的顺序自动被调用。初始化顺序为:自底向上,main包是最后一个。
|
|
scope
scope is a compile-time property. lifetime is a run-time property.
|
|
Basic Data Types
go提供了四种类型策略: 基本类型、组合类型、引用类型和接口类型。
基本类型包括数字、字符串和布尔值。组合数据类型包括数组和结构体。引用类型包括指针、切片、字典、函数和channel。接口类型后续再介绍。
go的数字类型包含几种大小不同的整型、浮点型和复杂的数据
|
|
int和uint是在特定平台上最高效的大小。具体大小视平台而定。
|
|
字符串
字符串是一个不可变的字节序列。
内建函数len返回的是字节的数量。index操作(s[i])返回的是第i个字节。
|
|
复合数据类型
|
|