这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
什么是Go语言
Go语言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明,他们最终的目标是设计一种适应网络和多核时代的C语言。所以Go语言很多时候被描述为“类C语言”,或者是“21世纪的C语言”,当然从各种角度看,Go语言确实是从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等诸多编程思想。但是Go语言更是对C语言最彻底的一次扬弃,它舍弃了C语言中灵活但是危险的指针运算,还重新设计了C语言中部分不太合理运算符的优先级,并在很多细微的地方都做了必要的打磨和改变。
关于Go语言的环境的配置与安装
详细的安装步骤我自己总结并发表出博客: Mac 下配置 go语言环境
Go语言基础语法
包
同一个目录下的所有.go文件必须声明同一个包名 main包 在Go语言里,命名为main的包具有特殊的含义。Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。main()函数是程序的入口,程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名。
命名导入
导入的多个包具有相同的名字,可以使用命名导入:在import语句给出的包路径的左侧定义一个名字,将导入的包命名为新名字。
package main
import (
"fmt"
myfmt "mylib/fmt"
)
函数init
每个包可以包含任意多个init函数,会在main函数之前执行。
func init() {
// 执行操作
}
使用Go的工具
使用命令执行编译和清理工作
go build
go clean
go vet
检测代码的常见错误
对gb的介绍
依赖管理 gb工程会区分开发人员写的代码和开发人员需要依赖的代码。
gb工程与Go官方工具链(包括go get)并不兼容。因为gb不需要设置GOPATH,而Go工具链无法理解gb工程的目录结构。
数组、切片和映射
数组
由于数组占用的内存是连续分配的,CPU能把正在使用的数据缓存更久的时间。 声明和初始化 在Go语言中声明变量时,总和使用对应类型的零值来对变量进行初始化。 g
// 声明一个包含5个元素的整型数组
var array [5]int
// 声明一个包含5个元素的整型数组
// 用具体值初始化每个元素
array := [5]int{10, 20, 30, 40, 50}
并发
并发与并行的概念
并发(concurrency)不是并行(parallelism)。并行是让不同的代码片段同时在不同的物理处理器上执行。并行的关键是同时做很多事情,而并发是指同时管理很多事情,这些事情可能只做了一半就被暂停去做别的事情了。
goroutine
一个线程可以创建多个goroutine
并发模式
runner
pool
work
Go语言的类型系统
定义类型的方法-使用struct关键字
type user struct{
name string
email string
ext int
privileged bool
}
// 声明user类型的变量,并初始化所有字段
lisa := admin{
name: "Lisa",
email: "lisa@email.com",
ext: 123,
privileged: true,
}
// 也可以这样
// 声明user类型的变量
lisa := user{"Lisa", "lisa@email.com", 123, true}
引用参考:
课外补充引用:
文章学习来源:
感谢以上作者的文章,今天的学习收获满满!!Thanks and HappyCoding!