基本结构和要素
- 第一个实例hello world
- 每个go文件属于且仅属于一个包
- 一个包由许多.go源文件组成
- 必须在源文件非注释第一行指明包
- 每个Go应用程序都包含一个main包
- 所有包名都应该使用小写字母
标准库:
- 属于同一个包的源文件必须全部被一起编译【包围编译的单元】
- 对一个包进行更改或重新编译后,引用该包的程序需全部重新编译
依赖关系:A->B->C
编译顺序:C->B->A
编译A.go文件,编译器读取直接依赖文件
引用包【包含该包所有代码对象,若导入包没使用会报错】
- import “fmt”:
fmt包实现格式化I/O(输入输出操作),用引号来引用包名
- 引用多个包
方法一:
import “fmt”
import “os”
……
方法二:
import “fmt”;import “os”
方法三:i
import(
“fmt”
“os”
)
方法四:
import(“fmt”;“os”)
包搜索顺序:
- 如果包名不是.或/开头,go会在全局文件进行查找
- 如果包名./开头,在系统的聚堆路径下查找
规则:
标识符:除_包中所有代码对象的标识符唯一【不同包可以使用相同标识符】
可见性规则:
当标识符(常、变量、类型、函数、结构字段)以大写字母开头,可以被外部包的代码所使用。【public】
标识符如果以小写字母开头,对包外不可见,整个包内可见可用
函数:
- ()中写入0个或多个参数,参数名后紧跟参数类型
- 一个可执行程序,除init()函数外,先执行main函数
- main函数无参数也无返回类型
- { 必须与方法的声明在同一行
- 程序返回
- 0-正常返回
- 非零值-因为异常被终止
案例:fmt.println()
print和println支持使用变量,字符,字符串或使用预定义方法来实现,默认打印格式将变量输出到控制台。
注释:不会被编译,可以通过godoc被使用
//单行注释
类型:
基本类型:
- int
- float
- bool
- string
结构化[使用nil作为默认值-等于java中的null]
- struct
- array
- slice
- map
- channel
描述类的行为
- interface
函数的返回类型说明:
多个返回值:
定义自己的类型:
定义一个类型:
type IZ int
定义多个类型:
type(
I int;
F float64;
S string;
)
Go语言执行顺序:
1、导入main中引用包
2、导入其他引用包【每个包被导入一次】
3、初始化常量和变量,调用init函数
4、调用main函数
类型转换:
a := 5.0【:= 类似C== auto a = 5.0】
b := int(a)
var a IZ = 5
c := int(a)
d := IZ(c)