Go语言学习
一、定义变量
- 赋值前需要先定义变量
- 定义变量有两种方式,自动推导类型与使用 var声明类型
- 同一个变量名自动推导只能使用一次,用于初始化变量,赋值可以使用n次
package main
import "fmt"
func main() {
// 第一种定义变量的方式
var a int = 10
a = 20
// 第二种定义变量的方式,先声明\b的类型,再给\b赋值为20
b := 20
fmt.Println("a = ", a)
fmt.Printf("b type is %T", b)
}
1.1、定义多个变量
package main
import "fmt"
func main() {
// 使用括号同时定义两个变量
var (
a int
b float64
)
a, b = 1, 1.2
fmt.Printf("a = %d,b = %f", a, b)
}
二、Println与Printf的区别
println
- 一段一段处理,自动加换行
- 比如输出("a = ",a),先输出a = ,然后输出a的值
printf
- 格式化输出,使用%d,%s
- \n代表换行符,不能自动换行
- 多个变量方便些
三、匿名变量的使用
匿名变量配合返回值来用,如果不想要某一个变量配合匿名变量来使用
package main
import "fmt"
// 测试函数
func test() (c, d, e int) {
return 1, 2, 3
}
func main() {
a, b := 10, 20
var tmp int
fmt.Printf("a = %d, b = %d\n", a, b)
// 变量反转赋值
a, b = b, a
fmt.Printf("a = %d, b = %d\n", a, b)
// 匿名变量,丢弃数据包不处理,匿名变量配合函数返回值使用,才有优势(当一个函数有多个返回值时,只想要部分内容)
tmp, _ = a, b
fmt.Println("tmp = ", tmp)
// 测试匿名变量实验
var f, g, h int
_, g, h = test() //不想要f的值了,此时f为0
fmt.Printf("f:%d,g:%d,h:%d", f, g, h)
}
四、常量
变量时程序运行期间可以改变的量,常量则不能改变,常量声明需要const关键字
五、iota枚举
package main
import (
"fmt"
)
func main() {
// iota时常量自动生成器,每个一行,自动加一
// iota 给常量赋值使用
const (
a = iota //0
b = iota //1
c = iota //2
)
fmt.Printf("a = %d,b = %d , c = %d", a, b, c)
// 重新使用const时,iota会被初始化为0
const d int = iota //0
fmt.Printf("d = %d", d)
// 也可以只写一个iota
const (
a1 = iota
a2
a3
)
fmt.Printf("a1 = %d,a2 = %d , a3 = %d", a1, a2, a3)
// 同一行,值都一样
}