变量
变量的定义
可以使用var来声明变量
有三种定义变量的方法。
第一种,指定变量类型,声明后若不赋值,使用默认值
第二种,根据值自行判定变量类型
第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明) 第三种方法不可以定义全局变量
如代码所示
package main
import "fmt"
func main(){
//第一种
var num1 int
num1 = 30
fmt.Printf("num1的数值是:%d\n", num1)
//或者
var num2 int = 15;
fmt.Printf("num2的数值是:%d\n", num2)
//第二种(类型推断)
var name = "李狗蛋"
fmt.Printf("类型是:%T,数值是:%s\n", name, name)
//第三种(简短定义)
sum := 100
fmt.Println(sum)
//多个变量同时定义
var a,b,c int
a=1
b=2
c=3
fmt.Println(a,b,c)
var m,n int = 100,200
fmt.Println(m,n)
/*两种隐式方法*/
//1.直接用逗号相连
var n1,f1,s1 = 100,3.14,"Go"
fmt.Println(n1,f1,s1)
//2.用括号括起来
var(
studentName = "狗蛋"
age = 18
sex = "女"
)
fmt.Printf("姓名:%s,年龄:%d,性别:%s", studentName, age, sex)
}
变量的初始值
int ———————0
float———————0
string——————""
注意:变量只定义不使用,在go语言中也算错
常量
常量意义
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量的声明
和变量一样有显示和隐式声明
//显式类型定义:
const b string = "abc"
//隐式类型定义:
const b = "abc"
//多重赋值
const a, b, c = 1, false, "str"
常量组中如不指定类型和初始化值,则与上一行非空常量右值相同
func main() {
const (
x uint16 = 16
y
s = "abc"
z
)
fmt.Printf("%T,%v\n", y, y)
fmt.Printf("%T,%v\n", z, z)
常量注意点
- 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
- 不曾使用的常量,在编译的时候,是不会报错的
- 显示指定类型的时候,必须确保常量左右值类型一致,需要时可做显示类型转换。这与变量就不一样了,变量是可以是不同的类型值
枚举类型
常量可作为枚举类型,如代码所示
const(
SPRING = 0
SUMMER = 1
AUTUMN = 2
WINTET = 3
)
iota
iota定义
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1
可以用来坐枚举值
const (
a = iota
b
c
)
iota简单用法
如果中断iota自增,则必须显式恢复。且后续自增值按行序递增
例如:
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
运行结果
0 1 2 ha ha 100 100 7 8