参考API Go语言中文网:https://studygolang.com/pkgdoc
菜鸟教程:https://www.runoob.com/go/go-ide.html
------SDK及安装工具下载,参考 word文档
参考尚硅谷韩顺平老师视频
这里的总结只是把初学时不懂的知识点列出来,系统性的知识参考《尚硅谷_韩顺平_Go语言核心编程.pdf》和 代码 goproject
一、变量
不管使用哪种高级程序语言编写程序,变量都是程序的基本组成单位。
变量 = 变量名 + 值 + 数据类型
二、常量
- 1、常量是一个简单值的标识符,在程序运行时,不会被修改的量。
- 2、常量中的数据类型只可以是:①bool、数字型(②整数型、③浮点型和④复数)和⑤字符串型。
- 3、常量的定义格式:const identifier [type] = value
显式类型定义:const b string = "abc"
隐式类型定义:const b = "abc" // 类型推导
多个同时声明 const a1, a2, a3, a4 = "121", 'a', 10, true
三、数据类型
在Go编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才申请大内存,就可以充分利用内存。
2.1、数据类型的基本介绍
- int8 一个字节(byte)
- uint代表无符号数
- Go的编码是utf-8
- 在Go中的编码方式为utf8,在utf8中一个汉字占三个字节。所以一个byte不能存储一个汉字。至少int32才能够三个字节
- 结构体,相当于Java中的class类
- 管道,用来做高并发
- 切片类似于动态数组
- bit:计算机中的最小存储单位。byte:计算机中基本存储单元。1 byte= 8 bit
如下图官网介绍:
三、基本数据类型
3.1 基本数据类型--数值型
3.1.1 整数类型(简称,整型)的使用
参考代码和pdf
3.1.2 浮点类型的使用
浮点数常量有两种表示形式:
一、十进制数形式:如:5.12 .512(0可以省略,小数点必须有)
二、科学计数法形式:如:5.12e2 = 5.12 * 10 的2次方
5.12E-2 = 5.12 / 10 的2次方
3.2 基本数据类型--字符类型 的使用
3.3 基本数据类型--布尔类型bool 的使用
3.4 基本数据类型--string类型 的使用
3.5 基本数据类型的默认值,也叫零值
3.6 基本数据类型的相互转换
和Java不同之处,都是显式转换,没有自动转换
3.7 基本数据类型和string的相互转换
四、派生/复杂数据类型
4.1 指针Pointer
- 基本数据类型,变量存的就是值,也叫值类型
指针类型,变量存的是一个地址(值的地址) - 获取变量的地址用&。比如:var i int = 10,获取i的地址:&i
- 基本数据类型在内存中的布局:
- 指针类型,指针变量存的是一个地址,这个地址指向的空间才是值。
比如:var ptr *int = &i,
ptr,输出ptr的值=&i,也就是i的地址
&ptr,ptr本身的地址
*ptr,ptr指向的值,也就是10 - 指针类型在内存中的布局:
4.2 值类型和引用类型
- 1、值类型,都有对应的指针类型,形式为 *数据类型。
比如,int对应的指针就是 *int;float32 对应的指针类型是 *float32,依此类推。 - 2、值类型:基本数据类型中的①int系列、②float系列、③bool、④string;派生/复杂数据类型中的⑤数组、⑥结构体struct
- 3、引用类型:①指针、②切片slice、③map、④管道、⑤interface
- 使用特点
- 3.1)值类型:变量直接存储值,内存通常在栈中分配。示意图:
- 3.2)引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间成为一个垃圾,由GC回收。示意图:
- 3.3)内存的栈区和堆区示意图:
- 3.4)逃逸现象
五、堆和栈
从数据存储来说,可以分为:栈和堆
堆和栈都是逻辑概念
甚至有的编译器把堆和栈的区别都取消了,如Golang中区分的就不是很明确,主要是根据变量到底使用多长时间来决定放在堆或栈,存在时间长就放堆里,否则栈区。如果想要放堆区,可以做逃逸分析。