常量变量
常量 const
package main
import "unsafe"
// 常量可以用len(), cap(), unsafe.Sizeof()常量计算表达式的值。
// 常量表达式中,函数必须是内置函数,否则编译不过:
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
func main(){
const (
PI = 3.14
const1 = "1"
)
const LENGTH int = 10
const e, f, g = 1, false, "str" //多重赋值
println(a, b, c,PI, LENGTH)
}
上面例子const.go
iota 特殊常量,可以认为是一个可以被编译器修改的常量。iota.go
package main
import "fmt"
func main() {
const (
// 第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;
// 所以 a=0, b=1, c=2 可以简写为如下形式:
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)
}
变量 var
var (
name = "gopher"
name1 = "1"
)
// 变量声明
var a int
a = 11 /* 赋值 */
// 变量声明 并赋值
var b int = 12
// 应用在函数体内的方式
var a, b, c, d int = 1, 2, 3, 4
// a =1
// b =2
// c =3
// d =4
var a, _, c, d int = 1, 2, 3, 4
// 忽略 _ 返回值忽略
- 全局变量名 以大写开头
- 全局变量不可以省略 var ,可以使用并行的方式
- 所有变量都可以使用类型推断
- 局部变量不可以使用
var()
简写的形式
变量的类型转换
// 只能类型显式转换
var a float32 = 1.1
// 省略var, 简短形式,使用 := 赋值操作符
b := int(a)
// 不兼容的类型不能转换类型
多变量声明
var x, y int
// 这种因式分解关键字的写法一般用于声明全局变量
var (
a int
b bool
)
var c, d int = 1, 2
var e, f = 123, "hello"
//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"