Go语言里面,每个变量也都是有类别的,这种类别叫做`数据类型(Data Type)`。
Go的数据类型有两种:一种是`语言内置的数据类型`,另外一种是`通过语言提供的自定义数据类型方法自己定义的自定义数据类型`。

数值型(Number)

数值型有`三种`,一种是`整数类型`,另外一种是`带小数的类型`(一般计算机里面叫做`浮点数类型`),还有一种`虚数类型`。

整数类型不用说了,和数学里面的是一样的。和数学里面不同的地方在于计算机里面`正整数和零`统称为`无符号整型`,而`负整数`则称为`有符号整型`。

Go的内置整型有`uint8`, `uint16`, `uint32`, `uint64`, `int8`, `int16`, `int32`和`int64`。其中`u`开头的类型就是`无符号整型`。无符号类型能够表示正整数和零。而有符号类型除了能够表示正整数和零外,还可以表示负整数。
另外还有一些别名类型,比如`byte`类型,这个类型和`uint8`是一样的,表示`字节类型`。另外一个是`rune类型`,这个类型和`int32`是一样的,用来表示`unicode的代码点`,就是unicode字符所对应的整数。

Go还定义了三个`依赖系统`的类型,`uint`,`int`和`uintptr`。因为在32位系统和64位系统上用来表示这些类型的位数是不一样的。

*对于32位系统*

uint=uint32
int=int32
uintptr为32位的指针

*对于64位系统*

uint=uint64
int=int64
uintptr为64位的指针

至于类型后面跟的数字8,16,32或是64则表示用来表示这个类型的位不同,`位越多,能表示的整数范围越大`。
比如对于用N位来表示的整数,如果是`有符号的整数`,能够表示的整数范围为`-2^(N-1) ~ 2^(N-1)-1`;如果是`无符号的整数`,则能表示的整数范围为`0 ~ 2^N`。

Go的浮点数类型有两种,`float32`和`float64`。float32又叫`单精度浮点型`,float64又叫做`双精度浮点型`。其`最主要的区别就是小数点后面能跟的小数位数不同`。

另外Go还有两个其他语言所没有的类型,`虚数类型`。`complex64`和`complex128`。

对于数值类型,其所共有的操作为`加法(+)`,`减法(-)`,`乘法(*)`和`除法(/)`。另外对于`整数类型`,还定义了`求余运算(%)`

求余运算为整型所独有。如果对浮点数使用求余,比如这样

 1  package main
 2
 3     import (
 4         "fmt"
 5     )
 6
 7     func main() {
 8         var a float64 = 12
 9         var b float64 = 3
10
11         fmt.Println(a % b)
12     }

编译时候会报错

invalid operation: a % b (operator % not defined on float64)

字符串类型(String)

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由`单个字节`连接起来的。(对于汉字,通常由多个字节组成)。这就是说,传统的字符串是由字符组成的,而`Go的字符串不同`,是`由字节组成`的。这一点需要注意。

字符串的表示很简单。用(双引号"")或者(``号)来描述。

"hello world"

或者

`hello world`

唯一的区别是,**双引号之间的转义字符会被转义,而``号之间的转义字符保持原样不变**。

 1  package main
 2
 3     import (
 4         "fmt"
 5     )
 6
 7     func main() {
 8         var a = "hello \n world"
 9         var b = `hello \n world`
10
11         fmt.Println(a)
12         fmt.Println("----------")
13         fmt.Println(b)
14     }

输出结果为

hello
world
----------
hello \n world

字符串所能进行的一些基本操作包括:
(1)`获取字符长度`
(2)`获取字符串中单个字节`
(3)`字符串连接`

 1 package main
 2
 3 import (
 4 "fmt"
 5 )
 6
 7 func main() {
 8 var a string = "hello"
 9 var b string = "world"
10
11 fmt.Println(len(a))
12 fmt.Println(a[1])
13 fmt.Println(a + b)
14 }

输出如下

5
101
helloworld

这里我们看到a[1]得到的是一个整数,这就证明了上面`"Go的字符串是由字节组成的这句话"`。我们还可以再验证一下。

 1 package main
 2
 3     import (
 4         "fmt"
 5     )
 6
 7     func main() {
 8         var a string = "你"
 9         var b string = "好"
10         fmt.Println(len(a))
11         fmt.Println(len(b))
12         fmt.Println(len(a + b))
13         fmt.Println(a[0])
14         fmt.Println(a[1])
15         fmt.Println(a[2])
16     }

输出

3
3
6
228
189
160

布尔型(Bool)

1 布尔型是表示`真值`和`假值`的类型。可选值为`true`和`false`。
2
3 所能进行的操作如下:
4 `&& and 与`
5 `|| or 或`
6 `!  not 非`
7
8 Go的布尔型取值`就是true`或`false`。`任何空值(nil)或者零值(0, 0.0, "")都不能作为布尔型来直接判断`。

输出结果

false

下面是错误的用法

 1 package main2 3     import (4         "fmt"5     )6 7     func main() {8         if 0 {9             fmt.Println("hello world") 10  } 11 if nil { 12 fmt.Println("hello world") 13  } 14 if "" { 15 fmt.Println("hello world") 16  } 17 }

编译错误

./t.go:8: non-bool 0 (type untyped number) used as if condition
./t.go:11: non-bool nil used as if condition
./t.go:14: non-bool "" (type untyped string) used as if condition

上面介绍的是Go语言内置的基础数据类型。

转载于:https://www.cnblogs.com/cuibin/p/6713352.html

GoLang学习笔记——data_type相关推荐

  1. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  2. golang学习笔记(五):数组的定义和使用

    golang 学习笔记 数组定义 数组是一系列相同数据类型在内存中有序存储的数据集合 var 数组名 [元素个数]数据类型//定义了10个整型变量的数组元素var arr [10]int//通过下标找 ...

  3. golang学习笔记(十六):多态的实现

    golang 学习笔记 多态实现 package main import "fmt"//先定义接口 在根据接口实现功能 type Humaner1 interface {//方法 ...

  4. golang学习笔记-1

    golang学习笔记-1 自学golang时,找到一篇学习资料http://golang.iswbm.com/en/latest/c01/c01_08.html 初看上面两种写法,不明就里,哪里高级了 ...

  5. golang学习笔记(基础篇)

    LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...

  6. Golang学习笔记之GORM基础使用(二)

    本文章主要学习GORM的增删查改.若还没有完成数据库和数据表的创建.定义模型以及数据库的连接请先学习本本专栏文章Golang学习笔记之GORM基础使用(一).本文为学习笔记,通过GORM官方中文文档和 ...

  7. golang学习笔记8 beego参数配置 打包linux命令

    golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架 https://beego.me/docs/mvc/contr ...

  8. 118云原生编程语言Golang学习笔记

    Golang学习笔记 文章目录 1.Go简介 1.1 简介 1.2 设计初衷 1.3 Golang vs Java 1.4 应用领域 1.5 用go语言的公司 2.Go下载和安装 2.1 开发工具 2 ...

  9. golang学习笔记之--Go语言内建容器

    话接上文 <golang学习笔记之--Go语言基本语法> 今天继续记录学习笔记,今天的笔记主题是Go语言内建容器 如果各位童鞋想要获得下面的源码,请搜索gzh:隔壁王小猿,关注后回复&qu ...

最新文章

  1. 我收到的最佳编程建议
  2. 基于XML的IOC案例
  3. vscode 设置断点知乎_vscode 代码自动换行设置
  4. MySQL数据库迁移到PostgreSQL
  5. python学习[第十三篇] 条件和循环
  6. SpringBoot 整合Redis报错:NoClassDefFoundError: redis/clients/util/SafeEncoder
  7. vbox设置剪切板共享
  8. oracle 00283,数据库出现ORA-00283/ORA-01610的问题
  9. python必备基础代码-Python初学者必会的3款代码编辑器
  10. spring mvc路径匹配原则
  11. 让你的软件支持繁体中文
  12. vscode 初始化HTML结构
  13. CE-植物大战僵尸关于“植物”的修改
  14. 康复期需注意什么?一组手账告诉你
  15. 红米note1s android5,[FIRE]红米Note 1S MIUI6 5.5.29精简、绝对纯净、
  16. [2023最新]美少妇Metasploit(MSF)下载安装及使用详解,永久免费使用,环境配置和使用技巧指南
  17. WmiPrvSE.exe 长时间占用CPU
  18. Unity 从零开始做游戏
  19. Android音视频开发(二)SurfaceView
  20. web前端实验系列juster

热门文章

  1. Xampp修改默认端口号
  2. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器
  3. 【汇编语言】DEBUG的使用
  4. IOS开发--TextField
  5. C语言常用基础位操作
  6. php imap模块的添加
  7. httpclient 多附件上传
  8. Accoridion折叠面板
  9. 个人站立会议-----20181216
  10. ActiveMQ在windows下启动失败解决方案