名称
- 实体第一个字母的大小写决定其可见性是否跨包。如果名称以大写字母开头,以为着它可以被其他包引入并访问。
- 包名总是有小写字母组成
- 驼峰式命名
变量声明及初始化
|
|
第一种形式通常在一个函数内部使用,不适合包级别的变量
第二种形式依赖默认初始化为空字符串的””
第三种形式很少用,除非我们声明多个变量
第四种形式是显式的变量类型,在类型一致的情况下是冗余的信息,在类型不一致的情况下是必须的。
实践中,我们通常使用前两种形式。
注意:第一种形式不需要声明所有在左边的变量, 如:
第一条语句声明了in和err。第二条语句仅声明了out,但向已有的err变量赋了值
短变量声明最少声明一个新变量,否则,代码编译将无法通过:
声明
主要有4个声明:变量(var)、常量(const)、类型(type) 和 函数(func)
Go程序存储在一个或多个以.go为后缀的文件里。每一个文件已package声明开头,表明文件属于哪个包。package声明后,接着是import声明,然后是包级别的类型、变量、常量、函数的声明,不区分顺序,eg:
指针
指针的值是一个变量的地址。
如果声明var x int, 表达式&x(x的地址)获取一个指向整型变量的指针,它的类型是整型指针(int)。如果值叫做p,我们说p指向x,或者p包含x的地址。p指向的变量写成p
作用域
|
|
第二个if语句嵌套在第一个语句中,所有第一个if语句的初始化部分 声明的变量在第二个语句中使可见的。同样的规则可以应用于switch语句
数据类型
主要数据类型分为四大类:基础类型、引用类型、结构类型
基础类型
数值类型、字符串类型、布尔类型
引用类型
引用类型包括:slice、map、通道、接口和函数
结构类型
通过struct定义
总结
- 每个代码文件都属于一个包,而包名应该与代码文件所在的文件夹同名
- Go语言提供了多种声明和初始化变量的方式。如果变量的值没有显式初始化,编译器会将变量初始化为零值
- 使用指针可以在函数建或者goroutine间共享数据
- 通过启动goroutine和使用通道完成并发和同步