GO-LANG学习笔记--基础语法篇(一)

GO-LANG学习笔记--基础语法篇(一)

变量

go语言的变量需要使用var关键字显式声明,如果给变量赋予了初始值的话,可以不声明变量类型,go可以自动推导变量的数据类型,如下面的变量s。

var x int
var f float32 = 1.6
var s = "abc"

也可以有更简单的办法来声明变量--在同一行声明多个变量,如下:

var x, f, s = 1, 1.6, "abc";

或者在代码块中声明多个变量,如下:

var (
		x int
		f float = 1.6
		s = "123"
)

在一个函数内部进行变量声明和赋值时,可以有更简便的方法:

func test() {
	x := 123;
}

多变量赋值时,程序会先计算所有的相关值后,一次从左到右为变量赋值,如下:

data,i :=[3]int{1,2,3}, 0
i,data[i] = 2, 100      //(i = 0) -> (i = 2), (data[0] = 100)

声明变量时可以只写"_",用于占位,如下:

func test()(int, string) {
	return 1, "abc"
}
func main() {
	_,s :=test()
	println(s)
}

golang 的编辑器会将声明但是未使用的变量当做错误处理,所以不要声明一些没用的变量,这样可以保证代码的美观以及程序的性能

var s = "abc"    //全局变量声明不使用没有问题
func main() {
	i:= 0				//由于变量i声明未使用,编译时会报错
}

需要注意变量的赋值和重新定义的区别,重新定以后变量就是一个全新的指针(c语言中概念),而赋值只是改变了变量的值,如下代码:

func main() {
	s:="abc"
	println(&s)
	s,s1 :="hello","world"
	println(&s,s,&s1,s1)
	
	{
		s,s1 := 1000, 30
		println(&s,s,&s1,s1)
	}
}

输出:

0xc82003ff38
0xc82003ff38 hello 0xc82003ff28 world  
0xc82003ff00 1000 0xc82003fef8 30

可以看到上面的变量s,s1的内存地址在重新赋值后没有变化,但是第三行输出时,内存地址发生了变化,这是由于变量s,s1在新的代码块中重新声明了,s和s1已经是全新的变量了,所以内存地址就发生了变化。

posted on 2016-04-14 14:19  刀锋独舞  阅读(177)  评论(0)    收藏  举报

导航