Go 基础
变量
// 变量 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\n",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) }