一、package

package时最基本的分发单位和工程管理中依赖关系的体现;

每个Go语言源代码文件开都都有一个package的声明,表示源码文件所属于代码包;

要生成GO语言可执行程序,必须要有main的package包,且必须在该包下有main函数;

同一个路径下只能存在一个package,一个package可以由多个源文件组成

二、import

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

import 只有一个功能,导入源代码依赖的package包,需要注意一下点:

不能导入源代码未用到的package包,否则go语言编译器会报错;

如果一个main包带入其它多个包,包将被顺序导入

如果main包中导入的包(如A包)中又依赖了其它的包(如B包),会首先导入依赖的B包,然后初始化B包中的常量和变量,如果B包中还有init函数,会自动执行init函数,当main包中的所有包导入完后,才会对main包中的常量和变量进行初始化,然后执行main包中的init函数,最后执行main包中的main函数;

如果一个包被导入多次,则该包只被导入依次;

import 有如下两种写法总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

方式一:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

方式二:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

import 还有以下常用用法:

1、别名操作:将导入的包命名为另一个容易记忆的别名;

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

2、点(.)操作:通过点标识导入包后,调用该包中的函数时可以省略包前缀;

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

3、下划线(_)操作:用下划线导入的包,不导入整个包,而是执行包中的init函数,无法通过包名来调用包中的其他函数。使用下划线操作往往是为了注册包中的引擎,让外部方便调用。

运行程序,报错,表示fmt未定义

三、数据类型总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

基本数据类型包括数值型、布尔型、字符串型。



总结送免费学习资料(包含视频、技术学习路线图谱、文档等)



总结送免费学习资料(包含视频、技术学习路线图谱、文档等)



总结送免费学习资料(包含视频、技术学习路线图谱、文档等)



变量被声明后的默认值情况:值类型的默认值为0,布尔型的默认值为false,String类型的默认值为空。

四、高级数据类型

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

1、数组类型
一个数组只能容纳若干相同类型的元素。

2、切片类型
切片类型与数组类型类似,可以容纳若干数据类型相同的元素,但切片类型不是定长度,切片类型可以通过数组进行切取

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

3、字典类型
字典类型用于存储键值对,同一个字典中的每个键都是唯一的。如果我们在向字典中放入一个键值对的时候其中已经有相同的键的话,那么与此键关联的那个值会被新值替换。

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

4、函数类型
go语言中函数由func关键字表示,在go语言中可以把函数赋给一个变量,通过变量来调用函数,例如 type myFunc my_func(s1 string, s2 string) string。常用形式如下:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

5、指针
go语言中指针表示形式与C语言中的类似,都是通过"*“获取地址中的值,通过”&"获取地址,用法如下:
用法一(同C写法):

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

用法二:总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

6、interface总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

interface时一种类型,时拥有一组方法的类型,用type来定义。如果一个类型实现了interface中的所有方法,那么该类型是interface的一个实现类。interface类型可以没有方法,是一个empty interface,任何类型都是empty interface的实现类。

7、struct类型总结送免费学习资料(包含视频、技术学习路线图谱、文档等)
Go语言中struct类型与C类似,但比C中的更灵活,可以为struct类型实现新的方法。

四、变量总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

全局变量的声明必须使用var关键词,局部变量可以省略;同一行可以声明多个变量。写法如下:

变量类型转化总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

GO中不存在隐式转换,类型转换必须是显示的,并且只能发生在两种兼容类型之间,例如:


**注意:**大写字母开头的变量是可以导出的,也就是可以被其它包读取,是公用变量;

小写字母开头的是不可导出的,是私有变量。

五、常量总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

常量范围目前只支持布尔型、数字型、字符型。常量定义从形式上可以分为显示和隐式:


特殊常量iota的用法总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

iota在关键字const出现时被重置为0, const中每新增一行常量声明将使iota的计数加1。例如:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

iota的常见用法:

1、跳值使用法

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

2、插队使用法

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

3、表达式隐式使用法

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

4、单行使用法

fmt.Print("\n")

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

六、流程控制

1、if条件判断

示例一:


实例二:总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

2、switch条件语句

go语言的switch…case语句中,只要匹配到case中一条,就只执行该case,执行完就自动跳出,不像C语言需要在每个case执行完加break语句,否则会继续向下执行其它case语句。

示例一:总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

示例二:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

因为go语言中所有字符和汉字都是用utf-8进行编码的,一个汉字占3个字节,range返回的“语”和“言”都是第一个字节作为索引。

range可以迭代字符串类型,数组类型,数组的指针类型,切片类型,字典类型,通道类型。

对于字符串类型,数组类型,数组的指针类型,切片类型,range每次迭代出两个值,第一个代表迭代处的索引,第二个值代表迭代处的值;

对于字典类型,range每次也迭代出两个值,第一个代表键,第二个代表键对应的内容,注意迭代不能保证顺序;

for语块中可以用break或continue,用法通C语言。

七、异常处理总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

Go 语言通过内置的错误接口提供了非常简单的错误处理机制,error类型是一个接口类型,这是它的定义:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

总结:比如my1是struct类型的指针,调用内部元素时,可以通过(*my1).age,也可以通过my1.age,因为go会自动进行类型推断

更多学习资料(包含视频、技术学习路线图谱、文档等)

技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等方面。

后台私信《资料》免费领取