前言:根据技术写作原理的要求,本笔记面向至少有c语言基础的同学,如果有python基础更好。在学习的时候,建议和已有知识相互勾连,这样一来学习的效率更高。
一、go语言特点:脱胎于c语言,但是比c更加简单
| go | c |
|---|---|
| 1. 高性能,高并发2. 语法简单,学习曲线平缓3. 标准库丰富4. 工具链完善5. 静态链接6. 快速编译7. 跨平台8. 垃圾回收 | 1. 简单紧凑,灵活方便2. 运算符丰富,表达能力强3. 面向过程,是结构化的程序设计语言4. 是中间语言,同时具有汇编语言和高级语言的优势5. 可移植性好6. 应用广泛,体现程序员水平 |
| go继承了c寓言的一系列优点,又发挥出了自己的优势。 | c语言同样有丰富的标准库,但是垃圾回收需要自己处理,进行free(指针),防止出现内存泄漏 |
二、现实意义
有多家公司使用了go语言,包括但不限于字节、腾讯、美团、滴滴、百度……
go语言的部署简单,学习成本低
适配RPC、HTTP框架
三、go的基本语法
1.变量与常量
| go | c | |
|---|---|---|
| 变量定义 | var a=””会自动确定变量类型 | 根据变量类型的不同确定int, float, char等类型 |
| 变量赋值 | a:=3 | a=3 |
| 常量定义 | const a string=”const” | #DEFINE A “const” |
2.分支语句
| go | c | |
|---|---|---|
| if...else | if a==b{}else{}取消了括号,同时需要注意不能没有{},因为不是c中默认一条语句在if当中 | if(a==b) i++;if(a==b){i++;}else{} |
| switch...case | 与if{}else{}相同 | 没有break就顺序执行 |
3.循环语句
| go | c | |
|---|---|---|
| for | 与条件语句相同,去掉()即可 |
4.数组
| go | c |
|---|---|
| var c[5] int | int a[5]= |
| B:=[5]{1,2,3,4,5} | Int b[5]={1,2,3,4,5} |
5.切片
与python中的numpy使用方式相同,支持[:5],[2:5](包含左,不包含右)的操作
6.集合(映射)map
M:=make(map[string]int)
7.range
Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回key-value对。
8.函数
与c中的函数不同,go支持有多个返回值,格式如下:
Func 函数名(变量名1 类型, 变量名2 类型) (返回值1 返回值1类型, 返回值2 返回值2类型){ return 返回值1,返回值2}
9.指针
和c一样,函数形参传递的是一个拷贝的内容,必须要传递指针才可以对原有进行修改。
(未完待续)