一、数据类型
1)基本数据类型:数值型(整型和浮点型)、字符型、布尔类型、字符串
2)派生数据类型(复杂数据类型):指针、数组、结构体、管道、函数、切片、接口、map
二、基本数据类型
1)整数类型:
(有符号)int8、int16、int32、int64;
(无符号)uint8、uint16、uint32、uint64;
(基本整数类型)int、uint、rune、byte
rune类型是当需要处理中文、日文或其他复合字符时,需要用到的
byte是uint8的别名
注意:格式化输出函数Printf() ;%T是用来查看数据类型的;变量占用的字节数用 unsafe.Size(变量名)
注意:在Golang程序中整型变量在使用时,遵守保小不保大原则,即在保证程序正确运行下,尽量使用占用空间小的数据类型
2)浮点类型
存放小数值:分为float32(4字节)、float64(8字节)
浮点类型底层的存储空间与操作系统无关;
浮点类型底层存储:符号位+指数位+尾数位(尾数位只存了个大概,很有可能会出现精度的溢出,因此建议使用float64)
3)字符类型
Golang中没有专门的字符类型,如果需要存储单个的字符(字母),一般使用byte存储
Golang中字符使用UTF-8编码
UTF-8编码表:http://www.mytju.com/classcode/tools/encode_utf8.asp
ASCII码表示Unicode的前128个
字符还有一种转义字符:格式为\+转义字符(将后面的字母表示为特殊含义)
4)布尔类型
布尔类型也叫bool类型,只允许取值,true和flase
布尔类型占1个字节
布尔类型适用于逻辑运算,一般用于程序流程控制
5)字符串(一串固定长度的字符连接起来的字符序列)
字符串的使用
6)基本数据类型的默认值
在Golang中数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值(默认值=零值)
整数类型 0;浮点类型 0;布尔类型 false;字符串类型 " ";
7)基本数据类型之间的转换
Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)
格式为:T(v) (将值v转换为T类型)
8)基本数据类型转换为string
两种方法:fmt.Sprintf("%参数",表达式)、使用strconv包的函数
fmt.Sprintf("%参数",表达式)(重点掌握)
使用strconv包的函数
9)string类型转换为基本类型
三、派生数据类型(复杂数据类型)
1.指针
var age int = 18
fmt.Println(&age) //打印地址
&+变量可以获取这个变量在内存中的地址
指针的细节:
1)可以通过指针改变它的指向值
2)指针变量接收的一定是地址值
3)指针变量的地址不可以不匹配
4)基本数据类型(又叫值类型),都有对应的指针类型,形式为*数据类型
eg.int对应的是 *int ;float32对应的是 *float32
基础重点:标识符
1)什么是标识符:变量、方法等,只要是起名字的地方,那个名字就是标识符。
2)标识符定义规则:
(1)三个组成部分:数字、字母、下划线
(字母的含义比较宽泛,使用汉子也可以,但不建议使用)
(2)四个注意:不可以数字开头;严格区分大小写、不能包含空格、不可以使用Go中的保留关键字。
(3)见名知意:增加可读性
(4)下划线“_”本身在GO中是一个特殊的标识符,称为空标识符,可以表示其他任何标识符,但是它对应的值会被忽略。(比如忽略某个返回值)所以仅能作为占位符使用,不能单独作为标识符使用。
eg.import (
"fmt"
_"strconv" //strconv包被忽略
)
(5)可以使用如下形式,但是不建议
var int int = 10 (int、float32等不算保留关键字,但是尽量不要使用)
(6)长度无限制,但是不建议太长
(7)起名规则
<1>包名:尽量保持package的名字和目录保持一致,尽量录取有意义的包名,剪短,有
意义,不要和标准库有冲突。
问题?(为什么之前在定义源文件的时候,一般我们都用package main 包?)
main包是一个程序的入口包,所以你main函数所在包建议定义为main包,如果不定义为main包那么就不能得到可执行文件。(同一个逻辑里有一个程序入口就行了)
<2>变量名、函数名、常量名:采用驼峰法 (就是单词按照大写区分开)
eg . var stuName string = "lili"
1、如果首字母大写,则可以被其他包访问;2、如果首字母小写,则只能在本包使用;
利用首字母大小写可以完成这样的权限控制
注意:1)import导入语句通常放在文件开头包声明语句的下面
2)导入的包名需要使用双引号包裹起来
3)包名是从$GOPATH/src/后开始计算的,使用/进行路径分离
(GOPATH是一个环境变量,需要配置:此电脑/右击属性/高级系统设置)
变量值:是你所在文件src前的路径