基本数据类型

您所在的位置:网站首页 字符串输出ascll码 基本数据类型

基本数据类型

2023-04-13 10:40| 来源: 网络整理| 查看: 265

概述一、基本数据类型1.1 整型1.2 数字字面量语法1.3 进制转换1.2 浮点型1.2.1 Golang中精度丢失的问题1.3 布尔类型1.4 字符串类型1.4.1 常见转义符1.4.2 strings字符串常见操作1. 比较(strings.Compare)2 . 是否包含3. 待续。。。1.5 byte 和 rune类型1.5.1 修改字符串1.6 基本数据类型转换1.6.1 类型转换1.6.2 数值类型转换1.6.3 转换成字符串类型1.6.4 字符串转换成int 和 float类型附录:整型转换符浮点型转换符常见转义字符字符串常见操作fmy.Print通用占位符其他

概述

Go 语言中数据类型分为:基本数据类型和复合数据类型

一、基本数据类型

1.1 整型

整型的类型有很多中,包括 int8,int16,int32,int64。我们可以根据具体的情况来进行定义其中,rune类型实际上是一个int32 , uint8就是我们熟知的byte型, int16对应C语言中的short型,int64对应C语言中的long型。

rune int32 uint8 byte int16 short int64 long

如果我们直接写 int也是可以的,它在不同的操作系统中,int的大小是不一样的

32位操作系统:int -> int3264位操作系统:int -> int64

可以通过unsafe.Sizeof 查看不同长度的整型,在内存里面的存储空间

var num2 = 12fmt.Println(unsafe.Sizeof(num2))

1.2 数字字面量语法

Go1.13版本之后,引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字,例如:

// 十进制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制 // 八进制 以0开头 var b int = 077 fmt.Printf("%o \n", b) // 77 // 十六进制 以0x开头 var c int = 0xff fmt.Printf("%x \n", c) // ff fmt.Printf("%X \n", c) // FF

1.3 进制转换

整型转换符

%b 二进制表示 %c 相应Unicode码点所表示的字符 %d 十进制表示 %o 八进制表示 %q 单引号围绕的字符字面值,由Go语法安全地转义 %x 十六进制表示,字母形式为小写 a-f %X 十六进制表示,字母形式为大写 A-F %U Unicode格式:123,等同于 “U+007B” var number = 17// 原样输出fmt.Printf("%v\n", number)// 十进制输出fmt.Printf("%d\n", number)// 以八进制输出fmt.Printf("%o\n", number)// 以二进制输出fmt.Printf("%b\n", number)// 以十六进制输出fmt.Printf("%x\n", number)

结果:

1717211000111

1.2 浮点型

Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE754标准:float32的浮点数的最大范围约为3.4e38,可以使用常量定义:math.MaxFloat32。float64的浮点数的最大范围约为1.8e308,可以使用一个常量定义:math.MaxFloat64打印浮点数时,可以使用fmt包配合动词%f,代码如下:

var pi = math.Pi// 打印浮点类型,默认小数点6位fmt.Printf("%f\n", pi)// 打印浮点类型,打印小数点后2位fmt.Printf("%.2f\n", pi)

| %b | 无小数部分、二进制指数的科学计数法,如-123456p-78; | | —- | —- | | %e | 科学计数法,例如 -1234.456e+78 | | %E | 科学计数法,例如 -1234.456E+78 | | %f | 有小数点而无指数,例如 123.456 | | %g | 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 | | %G | 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 |

1.2.1 Golang中精度丢失的问题

几乎所有的编程语言都有精度丢失的问题,这是典型的二进制浮点数精度损失问题,在定长条件下,二进制小数和十进制小数互转可能有精度丢失

d := 1129.6fmt.Println(d*100) //输出112959.99999999

解决方法,使用第三方包来解决精度损失的问题http://github.com/shopspring/decimal(这个不会)

1.3 布尔类型

Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。注意:

布尔类型变量的默认值为false。Go 语言中不允许将整型强制转换为布尔型.布尔型无法参与数值运算,也无法与其他类型进行转换。

定义

var fl = falseif f1 { fmt.Println("true")} else { fmt.Println("false")} %t true 或 false

1.4 字符串类型

Go 语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64等)一样。Go语言里的字符串的内部实现使用UTF-8编码。字符串的值为双引号(”)中的内容,可以在Go语言的源码中直接添加非ASCll码字符,例如:

s1 := "hello"s1 := "你好"

1.4.1 常见转义符

Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。

\r 一个回车,从顶头开始输,覆盖掉前面的 \n 换行符(直接跳到下一行的同列位置) \t 一个制表符,中间有空格 \‘ 单引号 \“ 双引号 \\ 反斜杠 \ 在输出路径的时候用

如果想要定义多行字符串,可以使用反引号

var str = `第一行第二行` fmt.Println(str)

1.4.2 strings字符串常见操作

GO语言中文网—strings字符串操作(这个很多,直接去原文看吧)!

len(str) 求长度 +或fmt.Sprintf 拼接字符串 strings.Split 分割 strings.Contains 判断是否包含 strings.HasPrefix,strings.HasSuffix 前缀/后缀判断 strings.Index(),strings.LastIndex() 子串出现的位置 strings.Join(a[]string, sep string) join操作

1. 比较(strings.Compare)

不推荐使用这个函数,直接使用 == != > < >=



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3