博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GoLang学习笔记——data_type
阅读量:5951 次
发布时间:2019-06-19

本文共 3194 字,大约阅读时间需要 10 分钟。

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 = 310 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 main 2  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

你可能感兴趣的文章
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
python-while循环
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>