变量
// 变量
package main
func main() {
//1 定义变量的第一种方式:全定义
//var关键字 变量名 变量类型 = 变量值
//var age int =10 //在go中,变量定义了就必须使用,如果不使用就报错
//fmt.Println(age)
//2 定义变量的第二种方式:类型推导(类型不需要写了)
//var age =10
//age=100
//var name ="lqz"
//fmt.Println(age) //打印并换行
//fmt.Print(name) //打印不换行
//fmt.Printf("%T
",age) //查看变量类型
//fmt.Printf("%T",name)
//fmt.Printf("%p",&name)
//3 定义变量的第三种方式:简略声明(类型和var关键字都不写)这种用的多,冒号和等号是一家
//a:=10
////var a int =100 //重复定义
////var a =99 //重复定义
//a := 99 //重复定义
//a=99
//fmt.Println(a)
//4 其他变形方式
//4.1 只定义不赋值
//var age int //定义变量 //如果是只定义,不赋值,只能用这种
//var age //只定义,不赋值,不行
//4.2 声明多个变量
//var width, height int = 100, 50 // 声明多个变量
//var width,height =100,50 // 声明多个变量
//var width,height =100,"lqz" // 声明多个变量
//width,height :=100,";qz" // 声明多个变量
//4.3 声明多个变量,并赋初值
//var (
// name = "naveen"
// age int = 29
// height int
//)
//fmt.Println(name,age,height)
//4.4 小坑
//var a int =10
////var b =99
//b,a:=99,100 //这个不报错,我们觉得是重复定义,冒号左侧,只要有一个没有定义过的变量,就可以
//fmt.Println(b)
//fmt.Print(a)
/*
总结:
1 变量类型在定义阶段就确定了,一旦确定,不允许改变
2 变量不可以重复定义
3 变量要先定义再使用
*/
}
变量定义规范
/*
变量命名规范
-变量命令建议用驼峰,(大小写有特殊意义)
-go文件命名建议用 下划线
- 一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
-大写字母和小写字母是不同的:Name和name是两个不同的变量
-关键字和保留字都不建议用作变量名
*/
/*
Go语言中关键字有25个
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
go语言中有37个保留字,主要对应内建的常量、类型和函数
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数: make len cap new append copy close delete
complex real imag
panic recover
*/
类型
/*
基础数据类型
数字:
有符号整形
-int:在32位机器是int32,在64位机器是int64
-int8:表示整数范围是:8个比特位,8个bit是1byte ,负数和0, 2的7次方-1 的范围
-int16 2的15次方减一
-int32
-int64
无符号整型
-uint8 2的8次方减一 定义一个人的年龄
-uint16
-uint32
-uint64
浮点型(小数),表示小数点后长度多少位
-float32
-float64
复数
-complex64
-complex128
byte:是int8的别名 单引号包裹
rune:是int32的别名 单引号包裹
字符串
双引号包裹
反引号包裹 ` `
布尔
bool true 和 false
数据类型默认值:
数字类型是0
字符串类型是 空字符串
布尔类型 false
*/
/*
byte:int8
short :int16
int:int32
long:int64
float:float32
double:float64
*/
常量
package main
//常量
func main() {
//常量的定义,第一种
//const 变量名 变量类型 = 变量值
//const age int8 = 99
////修改就报错
//age=199
//fmt.Println(age)
//第二种方式类型推导
//const age = 99
//age=88
//fmt.Println(age)
//其他定义方式
//const name,age = "zhangsan",99
//const (
// name string ="lqz"
// age =99
//)
//const (
// s1 =iota
// s2 =iota
// s3
// s4 =99
// s5 =iota
//)
//fmt.Println(s1) 0
//fmt.Println(s2) 1
//fmt.Println(s3) 2
//fmt.Println(s4) 99
//fmt.Println(s5) 4
}
//const 关键字定义,不允许改变
变量作用域范围
package main
import "fmt"
//在同一个包下,函数名不能重名
//var a int //全局变量,全局有效,只要改了,就是改了
//func main() {
// fmt.Println(a) //0
// a=19
// fmt.Println(a) //19
// test1() //99
// fmt.Println(a) //99
//}
//
//func test1() {
// a=99
// fmt.Println(a)
//
//}
//变量的作用域范围
var a int //全局变量,全局有效,只要改了,就是改了
func main() {
var a int
fmt.Println(a) //0
a=19
fmt.Println(a) //19
test1() // 0
fmt.Println(a) //19
}
func test1() {
fmt.Println(a)
}