Go语言基础总结
2019-04-23 12:21:15 92 举报
AI智能生成
Go语言学习基础总结
作者其他创作
大纲/内容
变量
变量的三种方式
1) 指定变量类型,声明后若不赋值,使用默认值
2) 根据值自行判定变量类型(类型推导)
3) 省略 var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误
4) 多变量声明,一次性声明多个变量,Golang 也提供这样的语法
5) 一次性声明多个全局变量【在 go 中函数外部定义变量就是全局变量】
6) 数据值可以在同一类型范围内不断变化(重点)
7) 变量在同一个作用域(在一个函数或者在代码块)内不能重名
8) 变量=变量名+值+数据类型,这一点请大家注意,变量的三要素
9) Golang 的变量如果没有赋初值,编译器会使用默认值, 比如 int 默认值 0
小数默认为 0 字符型为空
小数默认为 0 字符型为空
程序中 +号的使用
1) 当左右两边都是数值型时,则做加法运算
2) 当左右两边都是字符串,则做字符串拼接
数据类型基本介绍
整数类型
1) Golang 的整型默认声明为 int 型
2) 查看某个变量的字节大小和数据类型 (使用较多)
3) Golang程序中整型变量在使用时,遵守保小不保大的原则
小数类型/浮点型
1) Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响
2) Golang 的浮点型默认声明为 float64 类型。
3) 浮点型常量有两种表示形式
十进制数形式:如:5.12 .512 (必须有小数点)
科学计数法形式:如:5.1234e2 = 5.12 * 10 的 2 次方 5.12E-2 = 5.12/10 的 2 次方
十进制数形式:如:5.12 .512 (必须有小数点)
科学计数法形式:如:5.1234e2 = 5.12 * 10 的 2 次方 5.12E-2 = 5.12/10 的 2 次方
4) 通常情况下,应该使用 float64 ,因为它比 float32 更精确。[开发中,推荐使用 float64]
字符类型
1) 如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
2) 如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
3) 如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)..
2) 如果我们保存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
3) 如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)..
Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了
布尔类型
1) 布尔类型也叫 bool 类型,bool 类型数据只允许取值 true 和 false
2) bool类型占1个字节。
3) bool 类型适于逻辑运算,一般用于程序流程控制
string类型
1) Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文 乱码问题不会再困扰程序员。
2) 字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的
3) 字符串的两种表示形式
(1) 双引号, 会识别转义字符
(2) 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
(1) 双引号, 会识别转义字符
(2) 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
4) 字符串拼接方式
5) 当一行字符串太长时,需要使用到多行字符串,可以如上处理
基本数据类型的相互转换
1) Go中,数据类型的转换可以是从表示范围小-->表示范围大,也可以范围大--->范围小
2) 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
3) 在转换中,比如将 int64 转成 int8 【-128---127】 ,编译时不会报错,
只是转换的结果是按 溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围.
只是转换的结果是按 溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围.
基本数据类型和 string 的转换
基本类型转 string 类型
方式 1:fmt.Sprintf("%参数", 表达式) 【个人习惯这个,灵活】
方式 2:使用 strconv 包的函数
string 类型转基本数据类型
在将 String 类型转成 基本数据类型时,要确保 String 类型能够转成有效的数据,
比如 我们可以 把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整数,如果这样做,
Golang 直接将其转成 0 , 其它类型也是一样的道理. float => 0 bool => false
比如 我们可以 把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整数,如果这样做,
Golang 直接将其转成 0 , 其它类型也是一样的道理. float => 0 bool => false
指针
Go程序开发注意事项
1) Go源文件以"go"为扩展名
2) Go应用程序的执行入口是main()函数。
3) Go语言严格区分大小写。
4) Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号)
5) Go编译器是一行行进行编译的,因此我们一行就写一条语句,否则报错。
6) go语言定义的变量或者import的包如果没有使用到,代码不能编译通过。
7) 大括号都是成对出现的,缺一不可。
学习方向
区块链研发
Go服务器端/游戏软件工程师
Golang分布式/云计算软件工程师
Golang 执行流程分析
1) 如果是对源码编译后,再执行,Go 的执行流程如上图
2) 如果是对源码直接 执行 go run 源码,Go 的执行流程如下图
两种执行流程的方式区别
先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有 go 开发环境的机
器上,仍然可以运行
器上,仍然可以运行
是直接 go run go 源代码,那么如果要在另外一个机器上这么运行,也需要 go 开发
环境,否则无法执行。
环境,否则无法执行。
在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了
很多。
很多。
Golang语言特点
1.继承C语言理念
2.引入包概念
3.垃圾回收机制
4.天然并发(重要)
1) 语言层面支持并发,实现简单
2) goroutine,轻量级线程,可实现大并发处理,高效利用多核
3) 基于CPS并发模型实现
5.管道通信
6.函数返回多值
7.新的创新
切片slice
延时执行defer
0 条评论
下一页