Go语言学习Day2

一、数据类型

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前的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值