Hello World
知识点:
- Go代码使用包来组织,包类似于其他语言中的库和模块
- 每一个源文件的开始都是用package声明,指明这个文件属于哪个包
- 你必须精确地导入需要的包,在缺失导入或存在不需要的包时,编译会失败
- Go不需要再语句或声明后面使用分号结尾,跟在特定符号后面的换行符被转换为分号,“{”必须和关键字func在同一行,x+y这个表达式中,换行符可以出现在+的后面,但是不能出现在+的前面
- 使用gofmt工具可以将代码以标准格式重写
- 运行go可执行文件 go run helloworld.go
- 构建go可执行文件 go build helloworld.go
命令行参数
知识点:
- os包提供一些函数和变量,以与平台无关的方式和操作系统打交道,命令行参数以os包中Args名字的变量提供访问,在os包外面使用os.Args
- go中,所有的索引使用半开区间,及包含第一个索引,不包含最后一个索引
- 注释以//开头
- 变量可以在声明的时候初始化,如果没有明确地初始化,它将隐式地初始化为这个类型的空值
- +操作符对字符串的值进行追加,+=是赋值操作,:=用于短变量声明
- i++是语句不是表达式,所以 j = i++不合法,且仅支持后缀,所以–i不合法
- go不允许存在无用临时变量
- 空标识符“ _ ”(下划线),可以用在任何语法需要变量,但程序逻辑不需要的地方
四种变量声明方式:
for循环语句:
if语句:
bufio包
知识点:
- 扫描器Scanner,可以读取输入,以行或单词断开
- 新建一个bufio.Scanner类型的input变量: input := bufio.NewScanner(os.Stdin)
- 每一次调用input.Scan()读取下一行,并将结尾换行符去掉
- fmt.Printf从一个表达式列表生成格式化输出,Printf函数有超过10的转义字符
- map是一个使用make创建的数据结构的引用,当一个map传递给一函数式,函数接受到的是引用的副本。
- const声明,用来给常量命名。
- 控制流if,for,switch
- type声明,给已有类型命名
- go提供指针,使用&操作符获取一个变量的地址,使用*操作符获取指针引用的变量的值
- 方法和接口:关联了命名类型的函数称为方法,接口可以用相同的方式处理不同具体类型的抽象类型
- 注释: 单行注释//,多行知识/*…*/