这是我参与「第五届青训营」伴学笔记创作活动的第1天
一、 本堂课重点内容
本堂课分为三个模块:
- 介绍了什么是go语言以及go语言的特性及应用
- 介绍了go语言的基本语法
- 三个项目实战
二、详细知识点介绍
Go语言简介
Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。
Go语言特性:
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接,可以只拷贝编译成功地文件
- 快速编译
- 跨平台,可以在大多数平台运行而不用修改代码,甚至可以在单片机、路由器等系统运行
- 垃圾回收,不用考虑手动释放内存,大大减轻了编程难度
Go语言的基础语法
简单的hello world输出程序
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
- package main : 代表这个文件属于main包的一部分,程序的入口包
- import "fmt" : 导入标准库的fmt包,这个包主要用来往屏幕输入输出字符串、格式化字符串
- main函数中调用了fmt.Prrintln输出Hello World!
变量
Go语言声明变量的一般形式是使用 var 关键字,可以一次声明多个变量,变量类型根据后面自动推导。
var identifier1, identifier2 type
if else
与c或者c++不同点:
- if 后面没有括号,如果写了编译器也会在保存代码时自动去掉
- if 后面必须得接大括号,不能省略
循环
在go中循环没有while、do while,只有唯一的for循环,最简单的就是在for后面什么都不写,代表一个死循环。
switch
- 和c或者c++类似,但是在switch后面的变量名不需要括号
- 有一点很大的不同是:在go中不需要在case中加break语句来结束后续语句的执行
- case后面可以跟多个值,用
,隔开 - 可以使用任意的变量类型,甚至可以用来取代任意的if else语句,可在switch后面不加任何变量,然后在case中写条件分支
数组
- 在真是业务代码里很少直接使用数组,因为长度是固定的,用的更多的是切片
切片
- 可以任意更改长度
- 可以用make在创建一个切片,可以像数组一样去取值,使用append来追加元素
- 实际上是存储了一个长度和一个容量,加一个指向一个数组的指针
map
- golang中的map是完全无序的,遍历的时候不会按照字母顺序,也不会按照插入顺序,是随机顺序
range
- 对于切片或者map来说,可以用range来快速遍历
函数
- golang中的变量类型是后置的
- 支持返回多个值, 实际业务代码,第一个返回真正的结果,第二个返回错误信息
指针
- golang中的指针相比c或者c++来说支持的操作很有限,一个主要作用就是对传入的参数进行修改(不加指针就是拷贝,不会改变传入参数的值)
三、实践练习例子
- 猜谜游戏
- 在线词典
- SOCKS5代理
四、课后个人总结
首次接触golang,感觉语法比起c和c++来非常简洁易上手,有了之前其他语言的编程经验,golang语言完全可以做到随用随查,上手很快,当然也有很多与c和c++不同之处,容易忽略或者忘记区别导致使用语法错误。 本堂课还进行了三个简单项目的实战,目前正在具体摸索之中。
五、引用参考
- 字节内部课:走进 Go 语言基础语言
- [Go语言圣经(中文版)](前言 · Go语言圣经 (studygolang.com))