变量:variable 概念:一小块内存,用于存储数据,在程序运行过程中数值可以改变
使用:
step1:变量的声明,也叫定义
step2:变量的访问,赋值和取值
go的特性
静态语言:强类型语言 go,java,c++,c#
动态语言:弱类型语言 javascript,php,python,ruby
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)
var n1, f1, s1 = 100, 3.14, "go"
fmt.Println(n1, f1, s1)
var (
studentName = "李云龙"
age = 18
sex = "女"
)
fmt.Printf("学生姓名:%s;年龄:%d;性别:%s\n", studentName, age, sex)
}
注意点:
1.变量必须先定义才能使用
2.变量的类型和赋值必须是一致的
3.同一个作用域内,变量名不能冲突
4.简短定义方式,左边的变量至少有一个是新的
5.简短定义方式不能定义全局变量
6.变量的零值,就是默认值
整形:默认是0
浮点类型:默认是0
字符串:默认值是""
package main
import "fmt"
func main() {
var num int
num = 100
fmt.Printf("num的数值是:%d,地址是:%p\n", num, &num)
num = 200
fmt.Printf("num的数值是:%d,地址是:%p", num, &num)
var name string
//name = 100 //cannot use 100 (untyped int constant) as string value in assignment
name = "王二狗"
fmt.Println(name)
//num, name := 1000, "李小花" //no new variables on left side of :=
num, name, sex := 1000, "李小花", "男"
fmt.Println(num, name, sex)
fmt.Println("-----------------------")
var m int //整数,默认是0
fmt.Println(m)
var n float64 //0.0 -> 0
fmt.Println(n)
var s string //"",其实是个空字符
fmt.Println(s)
var s2 []int //切片[]
fmt.Println(s2)
fmt.Println(s2 == nil) //看s2是否等于空
}