这是我参与「第五届青训营 」笔记创作活动的第1天
GO工具
go build:源码文件编译为二进制文件go run:编译并运行源码文件,而且不保存可执行文件go fmt:使用GO标准格式重新格式化源文件go version:显示当前的GO版本号
GO语言变量声明:
- 声明变量
var oneNum int
var twoNum int = 22
oneNum = 11
var oneString string = "jiaozebin"
- 短变量声明
// 必须提前知道变量的初始值是什么
threeNum := 33
// 这样就不需要明确声明变量的类型,根据赋的值确定类型
twoString := "jiao"
// 所有声明的变量必须要在程序中使用,如果不使用,也必须要删除声明
fmt.Println("twoString = ", twoString)
- 小tips:同一个变量不能再同一个作用域内被声明两次,如下:
a := 1
fmt.Println(a)
a := 2
fmt.Println(a)
// errorInfo: no new variables on left side of :=
// 短变量声明中有一个变量必须是新的就可以
b, a := 3, 4
a, c := 5, 6
// 这里就会发生 声明"b",赋值"a",赋值"a",声明"c".
- 命名规则(编译器规则)
- 变量、函数或类型的名称以大写字母开头,则认为他是可导出的,可以从当前包之外的包访问它。(例如:
fmt.Println()) - 若以小写字母开头,则认为该名称是未导出的,只能在当前包中使用。
- 避免遮盖变量名
- go语言中,我们自定义变量时,如果和现有的函数,包,类型等关紧字冲突时,不会发生错误,但会遮盖关紧字原有的功能。
var int int 20
// 下面该行代码就会报错,`int is not a type`
var conest int
输入流
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
guessNum, err := strconv.ParseFloat(strings.TrimSpace(input), 64)
if err != nil {
log.Fatal(err)
}
fmt.Println("guessNum = ", guessNum)
根据这一小段代码,标注几点和其他语言不一样的地方
- 先产生一个字符流输入对象,然后再调用ReadString()方法输入信息。
- 小坑:ReadString()方法会返回两个值,这在go语言中是允许的,err会返回程序运行过程中发生的错误。
-
- 我们可以使用
_来接收这个err,而不去处理它
- 我们可以使用
-
- 使用
log.Fatal()方法,意味着报告该错误,并杀死程序
- 使用
**源:**《Head First GO语言程序设计》——Jay McGavren, 刘红泉,王佳 译