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已经是全新的变量了,所以内存地址就发生了变化。
有疑问加站长微信联系(非本文作者)