go语言基础 | 青训营笔记

343 阅读3分钟

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

1.go语言特性

1.高性能、高并发 2.语法简单、学习曲线平缓3.丰富的标准库 4.完善的工具链5.静态链接6.快速编译7.跨平台8.垃圾回收

2.go语言简介

  1. Go语言的出现 在具体学习go语言的基础语法之前,我们来了解一下go语言出现的时机及其特点。

Go语言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明,他们最终的目标是设计一种适应网络和多核时代的C语言。所以Go语言很多时候被描述为“类C语言”,或者是“21世纪的C语言”,当然从各种角度看,Go语言确实是从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等诸多编程思想。但是Go语言更是对C语言最彻底的一次扬弃,它舍弃了C语言中灵活但是危险的指针运算,还重新设计了C语言中部分不太合理运算符的优先级,并在很多细微的地方都做了必要的打磨和改变。

3.go语言使用

首先字节跳动已经全面拥抱了go语言,公司内部有上万个微服务使用golang 来编写,不久前也开源了GORPC框架KiteX。 根据拉勾的招聘数据,腾讯、百度、美团、滴摘、深信服、平安、OPPO、知乎、去哪儿、360、金山、微博、哗哩哗哩、七牛、FingCAP等公司也在大量使用Go语言,国外 Google Facebook等公司也在大量使用Go语言。 从业务维度看过语言已经在云计算、微服务、大数据、区块链、物联网等领域蓬勃发展。然后在云计算、微服务等领域已经有非常高的市场占有率Docker、Kubernetes、Istio、etcd、prometheus几乎所有的云原生组件全是用Go 实现的。

4.go语言语法

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。

Go语言中最常用的流程控制有iffor,而switchgoto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。

切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。

切片是一个引用类型,它的内部结构包含地址长度容量。切片一般用于快速地操作一块数据集合。

map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。