这是我参与「第五届青训营 」笔记创作活动的第一天。本次青训营的主题为go语言,由于之前习惯于java面向对象的语言特性,对于go语言类似于C语言的语法格式不是很适应,所以今天的学习并不是很顺利,花了一天才转换到go语言的语法上来。
Go语言的安装及配置
在官网下载完成go以及go的IDE之后即可开始go语言的配置,打开Goland创建项目,会提示选择GOROOT、GOPATH路径,选择go的安装路径作为GOROOT路径,项目路径作为GOPATH路径即可完成创建(如直接打开空文件夹作为项目,需邮件终端打开后输入go mod init projectName完成项目的初始化)。
go语言是通过包来管理代码的,在同一包中的go文件中package值应该相同,通常为包名。GOPAHT路径下有三个文件中分别为 bin:存放编译后的exe文件、pkg:存放自定义包的目录,下载的依赖、src:存放项目源文件的目录。
main函数及基础语法
与其他语言类似,go语言也是以main方法作为程序的入口,main方法只能出现在package为main的go文件中。
导包
导包的关键字为import,导入多个包时可以使用小括号将多个包括起来,省略多余的import关键字,
import (
"fmt"
"math/rand"
"time"
_ "test01/dosome"
some "test01/dosome"
)
导入同一项目不同的包时应从src下一层目录写起,写到go文件所属包为止,使用其方法时应使用包名点(或者别名点)的方式而非文件名点的方式调用。一个文件导入另一个包时会先去执行该包的init方法(如有定义)如只想调用该包的init方法进行初始化而不需要其他方法时可以在引入时包名前加_进行匿名导入,也可以在此处定义别名。
变量及常量
go语言中变量的声明并非和java一样重视变量的类型,它类似于Python声明变量,根据赋予的值确定变量的类型。常用的变量声明方式有四种:
var a int
var b int = 10
var c = 10
d := 10
var (
e = 10
f = 10
)
全局变量只能由var创建。 常量由const关键字创建,同时也可以使用小括号简化创建,创建常量时可以使用iota关键字赋值,iota默认为0并逐行递增,并且可以省略第一行之外的iota,iota关键字只能用于创建常量时使用。
const (
a=iota
b
c
)
方法
方法的格式为func关键字+方法名+方法参数列表+方法返回值列表+方法体,方法名首字母大写表示该方法为公共方法,可供外部使用,小写为私有方法,外部不可使用。go的方法支持多返回值,参数列表中参数名在前,类型在后,参数列表后为返回值列表,一般为两个返回值,一个为方法返回值,一个为异常返回值,返回值可以有参数名,并且可以在方法体中使用,当给返回值参数命名后,可以不用返回具体值,给对应的参数赋值即可完成返回。
func ReturnTest(a int)(x,y int) {
x=a
y=a
return
}
分支
与其他语言不同的地方在于,go语言中可以不使用小括号包裹判断语句,并且左括号不可以另起一行。 switch关键字可以判断任意类型的变量,case语句后可以跟完整的语句,并且go语言不像其他语言那样需要break跳出判断,当执行到对应的case语句后后自动跳出,在有多重if-else中使用switch-case进行替换可以增强代码的可读性。
循环
go语言中只存在一种循环类型 for循环,并没有类似于java中的while或者do while循环,同样for循环也可以省略小括号,也可以使用类似于java中fori的格式,并且三个语句可以任意删除,在循环条件中还可以使用round关键字,类似于Python中range关键字,可以可以顺序取出被循环对象的每个值。