Golang语言细节小结

前段时间,看了菜鸟入门,较浅的认识一下golang的语法习惯和规则,然后跟别人做了个爬虫项目,但是对于golang语言的语法结构还不是很懂。又看了遍《go实战》第二章。

构建程序在构建可执行文件时,需要找到这个已经声明的main函数,把它作为程序的入口。

关键字import就是导入一段代码,让用户可以访问其中的标识符,如类型、函数、常量和接口。

所有处于同一个文件夹里的代码文件,必须使用同一个包名。

下划线(_)这个技术是为了让Go语言对包做初始化操作,但是并不使用包里的标识符。下划线让编译器接受这类导入,并且调用对应包内的所有代码文件里定义的init函数。

编译器查找包的时候,总是会到GOROOT和GOPATH环境变量引用的位置去查找。

在Go语言里,标识符要么从包里公开,要么不从包里公开。以小写字母开头的标识符是不公开的,不能被其他包中的代码直接访问;大写字母相反

map是Go语言里的引用类型,需要使用make来构造。

在Go语言中,所有变量都被初始化为其零值。对于数值类型,零值是0;对于字符串类型,零值是空字符串;对于布尔类型,零值是false;对于指针,零值是nil。

Go语言使用关键字func声明函数,关键字后面紧跟这函数名、参数以及返回值。

func function_name( [parameter list] ) [return_types] { 函数体}

函数定义解析:

  • func:函数由 func 开始声明
  • function_name:函数名称,函数名和参数列表一起构成了函数签名。
  • parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
  • return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
  • 函数体:函数定义的代码集合。

切片是一种实现了一个动态数组的引用类型。在Go语言里可以用切片来操作一组数据。

简化变量声明运行符(:=)。这个运算符用于声明一个变量,同时给这个变量赋予初始值。

如果需要声明初始值为零值的变量,应该使用var关键字声明变量;如果提供确切的非零值初始化变量或者使用函数返回值创建变量,应该使用简化变量声明运算符。

在Go语言中,如果main函数返回,整个程序也就终止了。Go程序终止时,还会关闭所有之前启动且还在运行的goroutine。写并发程序的时候,最佳做法是,在main函数返回前,清理并终止所有之前启动的goroutine。

`引号里的部分被称作标记(tag)。

error类型的值,用来表示函数是否调用成功。

关键字defer会安排随后的函数调用函数返回时才执行。关键字defer可以缩短打开文件和关闭文件间隔的代码行数,有助于提高代码可读性,减少错误。

interface关键字声明了一个接口,这个接口声明了结构类型或者具名类型需要实现的性为。一个接口的行为最终由在这个接口类型中声明的方法决定。如果接口类型只包含一个方法,那么这个类型的名字以er结尾。如果接口类型内部声明了多个方法,起名字需要与其行为关联。

程序里所有的init方法都会在main函数启动前被调用。