*本文笔记参考:b站【尚硅谷】Golang入门到实战教程
1、go语言的特点-
一个文件是一个包
-
垃圾回收机制:内存自动回收,不需开发人员管理
-
天然并发:goroutine,轻量级线程,可实现大并发处理,高效利用多核
-
吸收了管道通信机制,形成了go语言特有的管道channel,通过管道channel,可以实现不同的goroutine间的相互通信
-
函数返回多个值
-
新的创新,如切片slice、延迟执行defer等
进入工作目录\github.com\golang(若没有golang文件夹则自行创建),执行
git clone https://github.com/golang/tools.git
若出现“fatal: unable to access 'GitHub - golang/tools: [mirror] Go Tools': OpenSSL SSL_read: Connection was reset, errno 10054”的报错,
取消ssl验证即可:
git config --global http.sslVerify "false"
下载完成后,可在golang\tool文件夹下看到很多文件
3、值类型和引用类型1)值类型
基本数据类型int系列、float系列,bool,string,数组,结构体struct。
变量直接存储值,内存通常是在栈区分配。
2)引用类型
指针,slice切片,map,管道chan,interface。
变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配。当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,被GC回收。
4、标识符的命名规范-
由26个英文字母大小写、0-9、_组成;数字不可以开头;严格区分大小写;
-
下划线“_”本身在go中是一个特殊的标识符,称为空标识符。可以代表任何其他的标识符,但是它对应的值会被忽略(比如,忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用;
-
不能以系统关键字作为标识符,比如break、if等。
-
包名:保持包名与所在文件夹的名字一致,尽量采取有意义的包名,简短,有意义,不要和标准库冲突(如 fmt 等)。
-
变量名、函数名、常量名:采用驼峰法,如 stuName。
如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用(可以简单理解成,首字母大写是共有的,首字母小写是私有的)。在golang中没有public、private等关键字。
5、算术运算符
-
/:整数除与小数除有区别:整数之间做除法,只保留整数部分而舍弃小数部分。如:x := 19 / 5,结果是3
-
%:对一个数取模时,可以等价a % b = a - a / b * b
-
golang的自增自减只能当作一个独立语言使用,不能进行变量定义及赋值运算:a := a++(错误); if i++ > 10(错误)
-
golang的++和--只能写在变量后面,不能写在变量前面。i++(正确);++i(错误)