go语言的特性
- golang是一门开源的编程语言,2007年诞生,2009年11月开始开源。
- golang的特点
- 运行效率高:go是一门编译性的语言,程序再开发完成之后只需要编译一次,后续不需要进行编译。
- 开发效率高,语法比较少,关键字比较少,开发的风格比较简单,限制比较简单
- 部署简单:直接把编译后的文件放到服务器上就能发布服务
- 实现多核并发:通过go语言的关键字
- 内置runtime:介于go语言和系统之间的,可以进行性能监控和GC问题排查
- 强大的标准库和网络库
- 内置强大的gofmt,统一代码风格
- golang的应用
- 服务器编程、虚拟机处理、文件系统、数据打包、处理日志
- 分布式系统、数据库代理、中间件
- 网络编程、API应用
- 云平台
- golang的环境搭建和IDE的安装
- golang语言的目录结构
- bin:可执行文件
- doc:go语言的使用手册
- pkg:
- src:开发使用的源码文件
- goPATH的语言的结构
- src:源码目录
- pkg:go install安装扩展的时候会用到
- bin:可执行文件自动放在bin目录下面
- golang语言的目录结构
- golang的命令行
- go build:用于编译源码文件、代码包、依赖包,能够生成可执行文件,直接执行即可
- go run:可以编译并运行go源码文件
- go get:动态的获取成代码包
- golang的IDE工具
- sublime text:
- Goland:GOROOT是go语言的加载目录、GOPATH是工作空间的位置
- liteide:
Golang的基础语法 - 关键字、标识符、注释、基础结构
- 25个关键字和36个标识符
- 注释分为多行注释(/**/)和单行注释(//)
- package
- package是最基本的分发单位和工程管理中依赖关系的体现
- 每个GO语言源文件的开头都拥有一个package声明,表示源文件所属代码包
- 要生成go语言可执行程序,必须要有main的package包,且必须该包下有main函数
- 同一个路径下面只能存在一个packgage,一个package可以拆分成多个文件组成
- import
- 如果一个main中导入其他包,包将被顺序导入
- 如果导入的包中依赖其他包(包B),会首先导入B包,然后初始化B包中的常量和变量,最后如果B包中有init,会自动执行init();
- 所有导入包完成后才会对main中的常量和变量进行初始化然后执行main中的init函数(如果存在),最后执行main函数。
- 如果一个包被导入多次,而该包只会被导入一次
- import别名
- 将导入的包命名为另一个容易记忆的别名
- 点(.)操作的含义是:点(.)表示的包导入后,调用该包中函数时可以省略前缀包名
- 下划线()含义是:导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数。使用下划线()操作往往是为了注册包中的引擎,让外部可以方便调用。
- 数据类型
- 说明:类型的零值不是空值,而是某个变量被声明之后的默认值一般情况下,数值类型的默认值是0,布尔类型的值是false,string类型的默认值是空字符串。
- 数值类型、字符串类型、布尔类型(Unsafe.Sizeof(type_value):输出占用的字节,例如int32输出的是4,即32位bit)
- 整数:无符号整型(uint8、unit16、unit32、uint64)和有符号整型(int8、init16、int32、int64)
- 浮点类型:浮点(float32、float64)和复数(conplex64、complex128)
- 其他:字节(byte)、rune(int32的别名)、int(根据系统的位数动态的指定位数,32位系统是32,64位系统是64)、uint、uintptr
- 布尔类型:bool
- 字符串:string(UTF-8编码)
- 变量和常量
- 变量的声明、变量的赋值、变量的声明和赋值同时进行,可以多个变量同时进行
- 分组变量声明:中间的变量之间不需要有逗号
- 全局变量必须使用var关键字,局部变量可以省略
- 特殊变量”_“,可以理解为垃圾桶,在接下来的程序中不需要这个值
- 通过reflect.TypeoOf(变量)来获取变量的类型
- 变量的类型转换
- Go语言中不存在隐式转换类型转换必须都是显式的
- 类型转换只能发生在两种兼容的类型之间,不同类型是不能进行转换的
- 类型转换的格式:<变量名称> [:] = <目标类型>(<需要转换的变量>)
- float转为为int的时候会有精度的损失
- 变量可见性规则
- 大写字母开头的变量是可到导出的,也就是其他包可以读取的,是公用变量
- 小写字母开头的变量就是不可导出的,是私有变量
- 常量
- golang中常量的定义形式
- 显式:const indentifier [type] = value
- 隐式:const identifier = value
- 常量可以使用内置表达式定义,len()、unsafe.SizeOf()
- 常量范围目前只支持布尔型、数字型和字符串
- golang中常量的定义形式
- iota
- iota在const关键字出现的时候将会被重置为0
- const中每新增一行常量声明将使iota技术增加一次
- iota的常用语法
- 跳值使用法:通过下划线()来实现,空行只有下划线()
- 插队使用法:
- 表达式隐式使用法:
- 单行使用法
- go运算符
- 算法运算符:+、-、*、/、%、++、--
- 关系运算符:==、>、<、!=、>=、<=
- 逻辑运算符:&&、||、!
- 按位运算符:&、|、^、<<、>>
- 赋值运算符
有疑问加站长微信联系(非本文作者)