今天我们来了解一下 Go 中函数的另一种形态,带有接收者的函数,我们称为 method。让我们来感受一下 Go 中面向对象的惊叹设计!method 是附属在一个给定的类型上的,他的语法和函数的声明语法几乎一样,只是在 func 后面增加了一个 receiver (也就是 method 所依从的主体)。
Go 语言中,也和 C 或者其他语言相同,可以声明新的类型,作为其它类型的属性或字段的容器。文章能带领大家学到Go中Struct类型,与一些独有的特性。Go 支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。通过匿名访问和修改字段相当的有用,但是不仅仅是 struct 字段,所有的内置类型和自定义类型都是可以作为匿名字段使用。
Go 中流程控制分三大类:条件判断,循环控制和无条件跳转。以及函数基础相关讲解,参数值和指针传递,函数参数,函数返回值。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行 init 函数(如果有的话),依次类推。等所有被导入的包都加载完毕了,就会开始对 main 包中的包级常量和变量进行初始化,然后执行 main 包中的 init 函数(如果存在的话),最后执行 main 函数。下图详细地解释了整个执行过程。
new是一个分配内存的内置函数,第一个参数是类型,而不是值,返回的值是指向该类型新分配的零值的指针,new返回一个变量的指针,但是这个指针指向空,你不可以直接对该指针进行操作,否则会报错,除非你将该指针指向一个该类型变量的地址。 make返回一个该类型的变量,以切片变量为例,上面提到,make适用于创建切片、map和channel,但new也可以创建
本文接着介绍Go的基础知识,Array,Splice,Map 三种结构,以及使用 new, make 两种不同的方法进行初始化做了对比。
本文主要来讨论下程序本身。Go语言的代码通过包组织,包类似于其它语言里的库(libraries)或者模块,以及模块的初始化,以及执行时机。然后介绍一下Go中的一些基础变量。
我们主要介绍了如何安装 Go,使用了标准包安装,安装之后配置了开发环境,然后介绍了如何配置本地的 $GOPATH,通过设置 $GOPATH 之后读者就可以创建项目,接着介绍了如何来进行项目编译、应用安装等问题,这些需要用到很多 Go 命令,所以接着就介绍了一些 Go 的常用命令工具,包括编译、安装、格式化、测试等命令