Go程序结构

1.1 名称

Go中函数,变量,常量,类型,语句标签和包的名称遵循一个简单的命名规则:名称的开头是一个字母或下划线,并且区分大小写
注:实体的第一个字母的大小写决定了其可见性是否可以跨包。如果名字是大写字母的开头,它是导出的,意味着它对包外可见和可访问的,可以被包外的其他程序所引用(拷贝),像 fmt 包中的 Printf.包名总是由小写字母组成。

1.2 声明

声明给一个实体命名,并且设定其全部属性。
有四个主要的声明:变量(var),常量(const),类型(type)和函数(type)。

1.3 变量

    短变量声明

var flo int = 100
flo := 100
上面这两个式子等价

多个变量可以以短变量声明的方式声明和初始化
i, j := 0, 1
i, j := os.Open(name) //os.Open()函数有两个返回值

短变量至少要声明一个一个新变量,否则,代码无法编译通过
f, err := os.Open(infile) //编译通过
f, err := os.Create(outfile) //编译错误,没有新变量

    指针

指针的值是变量的地址。不是所有的值都有指针,但是所有的变量都有指针。
注:Go语言中的指针,指针本身不可作计算,不能使用 ++,– 等操作

    new 函数

一种创建变量的方式就是使用内置的 new 函数。
new(T) 创建一个未知名的 T 类型变量,初始化为 T 类型的零值,并返回其地址(地址类型为 *T)

    变量的生命周期

生命周期是指在程序执行过程中变量存在的时间段。
编译器可以选择使用堆或栈的空间来分配内存,但是这个选择不是基于使用的 var,new 关键字来声明变量。
var global *int
func f(){
var x int
x = 1
global = &x //这里,x 一定使用的是 堆 上的空间,因为他的 f()函数返回后,还可以从 global 变量访问,尽管他被声明成一个局部变量
}

1.4 赋值

    多重赋值

x, y = y, x
a[i], a[j] = a[j],a[i]
i, j, k = 1, 2, 3
函数有多个返回值也可以
f, err = os.Open(“foo.txt”) //函数调用返回两个值
_, err = os Open(“foo.txt”) //可以丢弃第一个返回值,接收第二个返回值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章