变量的定义和声明
```
var a int = 123 //定义
var b int //声明
```
定义:声明的同时给变量赋值了
声明:只是告诉了变量类型,没有赋值
-
自动推导类型的精髓
语法
tmp := "ccc"
定义的时候使用 省掉了var 关键字来声明如var PI float64 =3.14159
可以用PI:=3.14159
来代替,
自动推导类型会根据变量第一次赋值的情况判断数据类型并分配内存空间,
之后就不允许再更改变量的类型了
多重赋值
```
a,b,c,d:=2,3.14159,"hello",true
fmt.Println(a,b,c,d)
//2 3.14159 hello true
```
在自动推导类型的基础上一次定义多个变量
交换a,b值的两种写法
```
//方法一 常规写法
a,b:= 1,2
tmp:= a
a = b
b= tmp
fmt.Println(a,b)//2 1
//新的方式...
c,d:= 1,2
c,d=d,c
fmt.Println(c,d)//2 1
```
格式输出
```fmt.Printf(format,var)```
```%d``` 整形(int), %3d表示输出的var会是3位数,如果不足3位 会用空格补齐
```%f``` 浮点型,%.3f表示输出保留3位小数,如果超出会四舍五入,如果不足用0补齐
```%t``` 布尔型
```%s``` 字符串型
%c
字符型 必须用'' 单引号,如果用双引号就会被认为是字符串型,格式化输出的时候就应该使用%s
a:='a'
fmt.Printf("%c\n",a)//a
fmt.Println(a)//97
b:="b"
fmt.Printf("%c\n",b)//%!c(string=b)
fmt.Println(b)//b
fmt.Printf("%s\n",b)//b
格式化输入
```fmt.Scan```(内存地址)
eg:
```
var tmp float64
fmt.Scan(&tmp)
fmt.printf("%f",tmp)
```
eg:
package main
import "fmt"
func main01() {
fmt.Println("hello world")
}
//变量的声明
func main() {
//var 变量名 类型
var age int
var name string
var weight float64
var height float32 = 1.88
var code byte
var ifMale bool
age = 10
name = "小明"
weight = 60.00
ifMale = true
code = 'a'
fmt.Println(age, name, weight, height, ifMale, code) //10 小明 60 1.88 true 97
//格式化输出
fmt.Printf("%c\n", code) //a
//自动推导变量类型
school := "上海虹桥一中"
grade := 9
class := 1
fmt.Println(school, grade, class)//上海虹桥一中 9 1
//快速交换两个变量的值
grade, class = class, grade
fmt.Println(grade, class)//1 9
//多重赋值
var a, b, c, d = 1, "2", false, '4'
fmt.Println(a, b, c, d)//1 2 false 52
//多重赋值自动推导
e, f, g, h := 6, "7", true, '8'
fmt.Println(e, f, g, h)//6 7 true 56
//匿名变量
_,h,_,i:=9,10,11,12
fmt.Println(h,i)//匿名变量 10 12
}
有疑问加站长微信联系(非本文作者)