Go学习之类型

版权声明:转载请注明出处 https://blog.csdn.net/weixin_43420337/article/details/86137055

赋值

// 全局变量

//单个变量
var x int //自动初始化为0
var y = false //不指定类型,自动赋值为bool

//多个变量
var x,y int
var i,s = 100,"hello"

// 组赋值
var (
	x,y int
	i,s = 100,"hello"
)

// 简短模式,
func main() {
	// 只能用在函数内部
	// 不能指定数据类型,只能根据赋值的类型创建数据类型
	// 局部变量
	x := 100 
	i,s := 100,"hello"
	// 退化赋值,内存地址不变,只是内存地址对应的值发生改变,不过必须要有一个新变量被定义,这里变量x的内存地址不变,必须还是同一个作用域
	x,z := 200,300
	// x:=200 会提示报错。
	// 不用作用域
	{
		x,z := 200,300 //不同作用域全部为新变量
	}
}

空标识符 _

Go语言的变量定义了就要用,一般返回的err不想处理可以用空标识符。

func main() {
	x,_ := strconv.Atoi("12") //忽略到error的返回值
	println(x)
}

常量

常量就是不会变得量,比如π ,在go编译时候会预先编译,放进内存区域的常量区。
常量赋值的方式跟变量差不多,只不过少了简短模式

const π=3.14
const (
	π=3.14
)

枚举

const (
	a = iota // 0
	// 这里不指定值和类型就会继承上一行的类型
	b //1
	c //2 
)
// 自增的作用范围只是在自己的常量组,新定义一个常量组会继续从0开始
const (
	_ = iota //0
	KB = 1 << (10*iota) //
	MB 
	GB
)
// iota 的自增是按行的不是类似与迭代器那样
const (
	a = iota //0
	b = 100
	c = iota //2
	d //3
)

// iota默认的是整型,可以自定义类型
type color byte // 自 定 义 类 型 
const( 
	black color = iota // 指 定 常 量 类 型
	red
	blue
) 
func test( c color) { println( c) } 
func main() { 
	test(red)
	test(100) // 100 并 未 超 出 color/ byte 类 型 取 值 范 围 
	x: = 2 
	test(x) // 错 误: cannot use x( type int) as type color in argument to test 
}

猜你喜欢

转载自blog.csdn.net/weixin_43420337/article/details/86137055
今日推荐