这是我参与「第五届青训营 」伴学笔记创作活动的第 1天
Go语言基础语法
1、最基本的go语言结构
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
我们可以从这代码结构看出,go语言包含三个部分:
- package定义了包名,我们必须在文件的开始指明文件所属的是那个包,每一个go语言程序必须有一个main的包。
- 下一行 import "fmt" import告诉Go 编译器这个程序需要使用 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
- func是程序的函数,类比于python中函数定义的def,其中main函数是整个程序的入口,是每一个执行程序必须包含的。
注意:文件的名与包名没有什么直接的关系,但是一个文件夹只能有一个包名,,否则会编译错误
2、学习到的基础语法
1、在go语言中不需要添加 ";",一行代表一个语句的结束,这和python比较类似。
2、go中的注释和其他编程语言类似,单行注释 "//", 多行注释 "/* */"。
3、变量的定义可以用var这里的数据类型是写在后面的与其它语言作为区分,也可以用 := 来直接定义比较方便也是我们经常使用的
4、go语言中的基础数据类型也和其他语言差不多,这里我重点学习了go语言中的切片,这对于我来说是一个比较新的内容,所谓的切片其实是对数组的抽象,我们可以类比为动态数组,长度不固定。
var slice1 []type = make([]type, len)
3、go语言的并发
再学习第三个项目的时候学习的了go的并发,Go语言的并发机制运用起来非常简便,在启动并发的方式上直接添加了语言级的关键字就可以实现,和其他编程语言相比更加轻量。
Go 允许使用 go 语句开启一个新的运行期线程, 即 goroutine,以一个不同的、新创建的 goroutine 来执行一个函数。 同一个程序中的所有 goroutine 共享同一个地址空间。
下面是一个简单的示例:
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
在执行之后我们发现,他们并无固定的先后顺序,原因就在于他们是两个goroutine在执行。
4、学习收获
第一天的学习感觉go是一门非常有趣的语言,但是其中有些语法结构不太熟悉,课下要多看文档。同时群里有非常多优秀的小伙伴不断的激励着我,坚持着一个假期,开学后看到不一样的自己。