什么是Go语言
特点
Go语言类似于C语言和js结合体,有着和C类似的结构体和指针,以及和js类似的函数体。
在此基础上,有着与C++和java媲美的性能,同时支持高并发且有着丰富的标准库,也就是说我们并不需要过多导入第三方库,而是仅仅使用标准库便可实现大多数应用开发
Go语言语法相对简洁,整体语法与其他常用高级语言相差不大,因而下面更多针对GO较特殊语法说明
开发环境
安装Golang
推荐下载路径
studygolang.com/dl
goproxy.cn/
配置集成开发环境
这里是推荐使用Goland作为开发工具
www.jetbrains.com/go/
创建项目时指定好工程路径,最好是自己新建一个专门的工作路径


注意事项
工程启动方式有三种,分为Directory,Package,File
其中Directory是以当前文件夹作为一个工程启动,且当前文件夹必须包含带有main函数的文件
Package需要将package path设为main包的路径名
File是指定一个Go文件启动,同时该文件必须包含main函数,且package为main
同一个工程下只能有一个main函数,如果想要单独启动一个文件则选用File,想调用别的文件的函数等则采用前两种

基础语法
变量定义
Go是一门强类型语言,每种变量都有对应的类型
Go中变量的定义有多种方式
1、 var 变量名 类型名 = 变量
2、 var 变量名 = 变量
3、 变量名 := 变量

三种方式皆可,通常是 := 的赋值方式用的多些
判断语句
Go中的if与C和Java等语言中差别不大,只是把条件判断中的括号去掉了,同时要求判断条件后必须跟大括号

循环语句
Go里面没有while循环和do……while循环,只有for循环
和别的语言并无二异

此外,Go语言中for循环还可通过for 下标,元素 := range 数组名的方式遍历,这也是使用较多的遍历方式
可以通过此方法直接获取下标和对应元素,类似于Java里的增强for循环,但在其基础上加了下标的获取

数组
和其他语言差别不大,数组初始给定长度,整型默认为0,字符串默认为空,同时因为Go里面的数组是固定的,因而很少直接使用数组

转而使用的是切片
切片会自动根据数组元素个数计算长度
说起来,Go里面切片的操作比起数组,我觉得更像是List集合,毕竟切片也有自动扩容的机制

map集合(字典)
map在根据key获取值时,还可以额外返回一个bool类型的值,以此判断该值是否存在

函数
Go语言中和别的语言很大一个不同的点就是函数的定义上,
Go语言函数的参数类型是写在参数名后面的,同时返回值类型也是放在函数的最后面
再者Go语言中函数是可以返回多个返回值的
相信很多之前常用其他语言的同学,第一次接触GO语言的函数是非常不习惯的

指针
Go语言中支持指针语法,用来进行引用类型传递。引用时需要加上*,传递时需要加上&

结构体
GO里面结构体和C一样也是值类型,想要让函数中的变动生效也要加上指针
此外结构体函数定义可以在函数名前加上结构体类型定义,这样就可以通过对象名+.的方式调用函数

异常处理
不同于Java的异常处理,Go里面可以在函数返回值类型中定义error类型,用于精确定位错误位置


JSON处理
Go语言中要将结构体转为JSON类型,需要在定义时显示地标注首字母大写的字段名称
值得注意的是,序列化后后变为16进制的byte数组,需要强制转为string类型
