Go基础语法学习

163 阅读4分钟

什么是Go语言

特点

Go语言类似于C语言和js结合体,有着和C类似的结构体和指针,以及和js类似的函数体。

在此基础上,有着与C++和java媲美的性能,同时支持高并发且有着丰富的标准库,也就是说我们并不需要过多导入第三方库,而是仅仅使用标准库便可实现大多数应用开发

Go语言语法相对简洁,整体语法与其他常用高级语言相差不大,因而下面更多针对GO较特殊语法说明

开发环境

安装Golang

推荐下载路径

studygolang.com/dl

goproxy.cn/

配置集成开发环境

这里是推荐使用Goland作为开发工具

www.jetbrains.com/go/

创建项目时指定好工程路径,最好是自己新建一个专门的工作路径

image.png

image.png

注意事项

工程启动方式有三种,分为Directory,Package,File

其中Directory是以当前文件夹作为一个工程启动,且当前文件夹必须包含带有main函数的文件

Package需要将package path设为main包的路径名

File是指定一个Go文件启动,同时该文件必须包含main函数,且package为main

同一个工程下只能有一个main函数,如果想要单独启动一个文件则选用File,想调用别的文件的函数等则采用前两种

image.png

基础语法

变量定义

Go是一门强类型语言,每种变量都有对应的类型

Go中变量的定义有多种方式

1var 变量名 类型名 = 变量
2var 变量名 = 变量
3、 变量名 := 变量

image.png

三种方式皆可,通常是 := 的赋值方式用的多些

判断语句

Go中的if与C和Java等语言中差别不大,只是把条件判断中的括号去掉了,同时要求判断条件后必须跟大括号

image.png

循环语句

Go里面没有while循环和do……while循环,只有for循环

和别的语言并无二异

image.png

此外,Go语言中for循环还可通过for 下标,元素 := range 数组名的方式遍历,这也是使用较多的遍历方式

可以通过此方法直接获取下标和对应元素,类似于Java里的增强for循环,但在其基础上加了下标的获取

image.png

数组

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

image.png

转而使用的是切片

切片会自动根据数组元素个数计算长度

说起来,Go里面切片的操作比起数组,我觉得更像是List集合,毕竟切片也有自动扩容的机制

image.png

map集合(字典)

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

image.png

函数

Go语言中和别的语言很大一个不同的点就是函数的定义上,

Go语言函数的参数类型是写在参数名后面的,同时返回值类型也是放在函数的最后面

再者Go语言中函数是可以返回多个返回值的

相信很多之前常用其他语言的同学,第一次接触GO语言的函数是非常不习惯的

image.png

指针

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

image.png

结构体

GO里面结构体和C一样也是值类型,想要让函数中的变动生效也要加上指针

此外结构体函数定义可以在函数名前加上结构体类型定义,这样就可以通过对象名+.的方式调用函数

image.png

异常处理

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

image.png

image.png

JSON处理

Go语言中要将结构体转为JSON类型,需要在定义时显示地标注首字母大写的字段名称

值得注意的是,序列化后后变为16进制的byte数组,需要强制转为string类型

image.png