变量
在程序运行过程中,其值可以发生改变的量成为变量
变量存在内存中,在程序运行时用来暂时存储数据
常量
在程序运行过程中,其值不可以发生改变的量成为常量
变量的定义和使用
package main
import "fmt"
func main() {
//变量定义格式
//var 变量名 数据类型
//变量声明 未初始化 值为0
//var a int
//变量初始化
var a int = 123
//表达式 计算a+321的结果赋值给a
a = a + 321
//打印变量的值
fmt.Println(a);
}
自动推导类型
package main
import "fmt"
func main() {
//在go语言中可以根据变量赋值来确定数据类型
//格式:
//变量名 := 值
a := 123 //int 整型
b := 3.14 //float64 双精度浮点型
c := "你好" //string 字符串类型
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
//格式化打印
//占位符 %T 打印数据对应的类型
fmt.Printf("%T
",a)
fmt.Printf("%T
",b)
fmt.Printf("%T
",c)
}
//常量定义 方法一
const Max int = 10
//常量定义 方法二 自动推导类型
const Min = 10
/* 常量 存放在 全局区->常量区 */
/* 变量 存放在栈区 */
package main
import "fmt"
func main0501() {
//变量定义
//var a int =10
//常量定义 常量名建议使用大写
const A int = 10
//A = 123 //err 常量在程序运行过程中不能赋值
fmt.Println(A)
//fmt.Println(&A)//err 常量地址不能获取
}
func main0502() {
//在程序运行过程中 可以将不需要修改的量 设置为常量
//圆周率 3.14
const PI float64 = 3.14
r := 2.5
//圆的面积
s := PI * r * r
//圆的周长
l := 2 * PI * r
fmt.Println(s)
fmt.Println(l)
}
func main0503() {
//常量自动推导类型
const MAX = 10
const PI = 3.14
fmt.Printf("%T
", MAX)
fmt.Printf("%T
", PI)
}
func main() {
//所有的字面常量 存在内存中全局区-》常量
fmt.Println("hello")
a := 10
a = a + 123
}
多重赋值和匿名变量
package main
import "fmt"
func main() {
//定义多个变量
//var a,b,c,d int
//
//a=1
//b=2
//c=3
//d=4
//多重赋值
//var a, b, c, d int = 1, 2, 3, 4
//自动推导类型 进行多重赋值
//匿名变量 在数据定义或数据接收时 如果不想处理的数据可以使用匿名变量_来接收数据但是不会处理
//注意:匿名变量不可以打印
a, b, _, _ := 1, 2.22, 'a', "你好"
//fmt.Println(a, b, c, d)
fmt.Printf("%T
",a)
fmt.Printf("%T
",b)
//fmt.Println(_)//err
}
格式输入
package main
import "fmt"
func main0701() {
//fmt.Print 打印数据不换行
//fmt.Println 打印数据并换行
fmt.Println("hello")
fmt.Println("world")
}
func main() {
//格式化输出 需要根据个数进行占位符使用
//%d 表示输出一个整型数据
//%f 表示输出一个浮点型数据 默认保留六位小数
//%T 表示输出一个变量对应的数据类型
a := 123456
b:=3.149999
//%5d 表示数据位数为5位 不足前面补空格
//%-5d 表示数据位数为5位 不足后面补空格
//%05d 表示数据位数为5位 不足前面补0
//如果数据超出位数 正常输出
fmt.Printf("%5d
",a)
//%.2f表示小数点保留两位 会对第三位进行四舍五入
fmt.Printf("%.2f
",b)
}
格式输出
package main
import "fmt"
func main0801() {
var a int
var b float64
//通过键盘为变量赋值
//& 是一个运算符 表示取地址运算符
//如果scan中有多个数据 可以使用空格或换行表示接收结束
fmt.Scan(&a, &b) //阻塞式请求
fmt.Println(a)
fmt.Println(b)
}
func main() {
var a int
var b float64
//格式化接收数据 需要使用占位符
fmt.Scanf("%d%f", &a, &b)
fmt.Println(a)
fmt.Println(b)
}
标识符命名规则
1、可以使用字母、数字、下划线
2、只能以字母下划线开头
3、不允许使用go语言关键字
4、区分大小写
5、见名知义