初学Golang的自学笔记(持续更新)
前言
第一次写博客也第一次自学一门语言,之所以选择了Golang。是觉得这是一门比较新的语言,可以从这门语言来开始比较各语言的不同也给自己以后学习其他语言有一个可以借鉴的经验。这个博客是我学习Golang时的,自己犯下的错误的整理也会写一些自己学习Golang的心得体会以及对Golang的理解吧!!
项目场景:
编译器:Vscode2020 语言:Golang
文章目录
- 初学Golang的自学笔记(持续更新)
- 前言
- 项目场景:
- 2020年9月22日(For,函数语句等的中括号)
- 问题描述:
- 在Vscode2020下,用Golang来实现For语句时,若中括号不紧挨着语句会报错,会提示找不到函数部分。
- 原因分析:
- 以For语句为例子。若提示说找不到函数部分说明下面中括号的部分不属于上面的For语句,即For语句和下面的函数体被隔开了。这时我突然想到了一开始时发现每个语句不打分号直接回车换行不会报错。这时我就觉得是不是编译器或Golang语言换行时会自动在语句后面加上分号
- 然后我在报错栏上发现每次报这个错误时都会跟着一个错误
- 罪魁祸首果然是分号,经过判断觉得应该是编译器的自动填充,这个是Golang这个新语言的要求和C/C++以及Java不同。 Golang的for语句也不要求在循环条件那加上小括号。简约,减少不必要的工作量,更强的交互性,这些将成为新语言的一大特点吧!
- 解决方案:
- 解决方法也很简单,就是用For和定义函数时不要回车分号,直接紧贴着函数括号写函数体。
- 2020/9/27(Golang的切片)
- 切片是什么
- 切片是一种轻量级的数组包装器,它既保留了数组的完整性,又可以在切片中自由添加和删除元素,比数组使用起来更加方便和灵活!
- 怎么使用切片
- 由上面的例子可以知道make括号内第一个参数是数据类型,第二个类型是长度。
- 一·在切片中添加/删除元素
- Go语言提供了内置函数append,可以用来添加或删除元素
- 切片的删除要比添加复杂一点,有些地方需要注意。第一个参数【:n】,表示你想从哪个下标元素开始删除(包括该下标元素,上面例子便是从下标为2开始删除),第二个参数【:n+a】中的a便是你想删除的个数(上面例子是【2+1】所以只删了下标为2的那一个元素)
- 二·复制切片中的元素
- 上面的例子从cheeses的下标为0的元素开始复制,也就是全部复制到CopyCheeses中,可以调整数字来复制特定范围内的元素
- 实际体验
- 切片真香!
2020年9月22日(For,函数语句等的中括号)
问题描述:
在Vscode2020下,用Golang来实现For语句时,若中括号不紧挨着语句会报错,会提示找不到函数部分。
@tht
missing function body!
原因分析:
以For语句为例子。若提示说找不到函数部分说明下面中括号的部分不属于上面的For语句,即For语句和下面的函数体被隔开了。这时我突然想到了一开始时发现每个语句不打分号直接回车换行不会报错。这时我就觉得是不是编译器或Golang语言换行时会自动在语句后面加上分号
然后我在报错栏上发现每次报这个错误时都会跟着一个错误
@tht
unexpected semicolon or newline before!
罪魁祸首果然是分号,经过判断觉得应该是编译器的自动填充,这个是Golang这个新语言的要求和C/C++以及Java不同。
Golang的for语句也不要求在循环条件那加上小括号。简约,减少不必要的工作量,更强的交互性,这些将成为新语言的一大特点吧!
解决方案:
解决方法也很简单,就是用For和定义函数时不要回车分号,直接紧贴着函数括号写函数体。
2020/9/27(Golang的切片)
切片是什么
在学习Golang时,在学习数组这个章节部分时,发现了一个好东西——切片,这个是我在Java和C/C++中没有见过的。对于数组的操作我认为C/C++是最原始的,Java在那之上有正则表达式和一些包装器类来辅助。但是没有一个根本上解决数组的长度不可更改性,而Golang提供的切片技术便有这个优势。那么切片到底是什么呢?
切片是一种轻量级的数组包装器,它既保留了数组的完整性,又可以在切片中自由添加和删除元素,比数组使用起来更加方便和灵活!
PS:反正我是慢慢喜欢上了使用切片来代替数组
怎么使用切片
怎么声明切片
同样用var来声明切片,在等号的右边用Go内置函数make来创建一个切片。
@tht
PS:列如要声明一个长度为2,数据类型为string的空切片
var cheeses = make([]string,2)
由上面的例子可以知道make括号内第一个参数是数据类型,第二个类型是长度。
切片的操作
一·在切片中添加/删除元素
Go语言提供了内置函数append,可以用来添加或删除元素
@tht
cheeses:=append(cheeses,"tht)
经过上面的语句后切片的长度由2变成了3,且下标为2的元素被赋值为"tht",其它的元素保持顺序不变
@tht
cheeses= append(cheeses[:2],cheeses[2+1]...)
经过上面的语句后切片的长度由3变成了2,且下标为2的元素被删除,其它的元素保持顺序不变
切片的删除要比添加复杂一点,有些地方需要注意。第一个参数【:n】,表示你想从哪个下标元素开始删除(包括该下标元素,上面例子便是从下标为2开始删除),第二个参数【:n+a】中的a便是你想删除的个数(上面例子是【2+1】所以只删了下标为2的那一个元素)
二·复制切片中的元素
复制切片中的元素可以使用内置函数copy,在复制切片中的元素时。必须声明一个数据类型相同的切片,例子如下
var CopyCheeses=make([]string,3)
copy(CopyCheeses,cheeses[0:])