Go语言入门| 青训营笔记

90 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第1天

一、 本堂课重点内容

本堂课分为三个模块:

  1. 介绍了什么是go语言以及go语言的特性及应用
  2. 介绍了go语言的基本语法
  3. 三个项目实战

二、详细知识点介绍

Go语言简介

Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。

Go语言特性:

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接,可以只拷贝编译成功地文件
  6. 快速编译
  7. 跨平台,可以在大多数平台运行而不用修改代码,甚至可以在单片机、路由器等系统运行
  8. 垃圾回收,不用考虑手动释放内存,大大减轻了编程难度

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

image.png

if else

image.png

与c或者c++不同点:

  1. if 后面没有括号,如果写了编译器也会在保存代码时自动去掉
  2. if 后面必须得接大括号,不能省略

循环

image.png

在go中循环没有while、do while,只有唯一的for循环,最简单的就是在for后面什么都不写,代表一个死循环。

switch

image.png

  • 和c或者c++类似,但是在switch后面的变量名不需要括号
  • 有一点很大的不同是:在go中不需要在case中加break语句来结束后续语句的执行
  • case后面可以跟多个值,用,隔开
  • 可以使用任意的变量类型,甚至可以用来取代任意的if else语句,可在switch后面不加任何变量,然后在case中写条件分支

数组

image.png

  • 在真是业务代码里很少直接使用数组,因为长度是固定的,用的更多的是切片

切片

image.png

  • 可以任意更改长度
  • 可以用make在创建一个切片,可以像数组一样去取值,使用append来追加元素
  • 实际上是存储了一个长度和一个容量,加一个指向一个数组的指针

map

image.png

  • golang中的map是完全无序的,遍历的时候不会按照字母顺序,也不会按照插入顺序,是随机顺序

range

image.png

  • 对于切片或者map来说,可以用range来快速遍历

函数

image.png

  • golang中的变量类型是后置的
  • 支持返回多个值, 实际业务代码,第一个返回真正的结果,第二个返回错误信息

指针

image.png

  • golang中的指针相比c或者c++来说支持的操作很有限,一个主要作用就是对传入的参数进行修改(不加指针就是拷贝,不会改变传入参数的值)

三、实践练习例子

  1. 猜谜游戏
  2. 在线词典
  3. SOCKS5代理

四、课后个人总结

首次接触golang,感觉语法比起c和c++来非常简洁易上手,有了之前其他语言的编程经验,golang语言完全可以做到随用随查,上手很快,当然也有很多与c和c++不同之处,容易忽略或者忘记区别导致使用语法错误。 本堂课还进行了三个简单项目的实战,目前正在具体摸索之中。

五、引用参考