4、变量
变量
1 、变量定义与使用
🍀 语法
定义变量(使用默认值)
var a int //变量有默认值:例如整数是0(int类型),字符串为空,
var b string
在一行定义相同类型的变量
var a, b int = 1, 2
在一行定义不同类型的变量(省略变量类型)
var a, b, c = 1, "go", true
var a = 1
使用简短声明方式(声明并赋值,省略var关键字)
a, b, c := 1, "go", true //:=只能在函数内使用,不能用在函数外,go语言这种方式还是挺受欢迎的!
a := 520
var ( //在全局定义变量时,一般推荐使用这种方式!
a = 1
b = "go"
c = true
)
说明:
%d 整数
%s 字符串
%f 打印浮点型
%q 加上引号
%T 打印变量类型
Println 换行
Print 不换行
🍀 例子:变量是有默认值的
package main
import "fmt"
var c1, c2 = 6, "golang"
// d1, d2 := 6, "golang"
var (
d1 = 7
d2 = "go"
)
func varInitValue() {
var a, b int = 3, 4
fmt.Println(a, b)
var s string = "abcd"
fmt.Println(s)
var s1, s2, s3 = 5, "hello", true
fmt.Println(s1, s2, s3)
s4, s5, s6 := 520, "xyy", false
fmt.Println(s4, s5, s6)
}
func main() {
var a int
var b string
fmt.Println(a, b)
fmt.Printf("%d %s\n", a, b)
fmt.Printf("%d %q\n", a, b)
varInitValue()
fmt.Println(c1, c2)
fmt.Println(d1, d2)
}
⚠️ 在go语言里,变量定义了,必须要使用,否则会报错!
2、系统变量类型
🍀 语法
- bool
- string
- (u)int、(u)int8、(u)int16、(u)int32、(u)int64、uintptr
- byte(等价于uint8)、rune(等价于int32 unicode)
- float32、float64、complex64、complex128
//说明:
1.有符合整型,无符号整型(前面会加上一个u)
2.(u)int会根据自己机器平台来决定其长度的,例如32位系统,其就是(u)int32,64位系统,其就是(u)int64
3.Go语言不允许隐式类型转换,只能强制转换;
4.Go语言中不支持指针运算。(uintptr指针类型(在go语言里,指针是非常简单的,区别于其他编程语言,go里不支持指针的运算的!))
🍀 例子
package main
import (
"fmt"
"math"
"runtime"
"strconv"
)
func main() {
var a = 1
var b int32
b = int32(a)
fmt.Printf("%T %T\n", a, b)
cpuArch := runtime.GOARCH //打印本系统的cpu架构
intSize := strconv.IntSize //打印本系统字节大小
fmt.Println(cpuArch, intSize)
var f1 float32
var f2 float64
fmt.Printf("%f %f\n", f1, f2)
var bt byte = 2
var ru rune = '彦'
fmt.Printf("%T %T\n", bt, ru)
var a1, a2 = 3, 4
var c int
temp := a1*a1 + a2*a2
fmt.Printf("%T\n", temp)
c = int(math.Sqrt(float64(temp))) //math.Sqrt()方法:求平方
fmt.Printf("%T %d\n", c, c)
p := 1
ptr := &p
ptrptr := &ptr
fmt.Printf("%T %T %T", p, ptr, ptrptr)
}