go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型相关的知识,希望对你有一定的参考价值。
数据类型的出现是为了区分所需内存大小不同的数据。在编程时,我们需要用到大数据结构时才需要申请大内存,这样就可以充分利用内存。在go编程语言中,数据类型用于声明函数和变量。
1. 基本类型
go的基本类型分为3类
序号 | 类型 | 描述 |
---|---|---|
1 | 布尔型 | 布尔型的值只能是常量true或者false。一个简单的例子:var b bool = true |
2 | 数字类型 | 整型int,浮点型float32、float64,Go语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码 |
3 | 字符串类型 | 字符串就是一串固定长度的字符连接起来的字符序列。go语言字符串是由单个字节连接起来的。Go语言字符串的字节使用UTF-8编码标识Unicode文本 |
1.1 布尔类型
序号 | 类型 | 描述 |
---|---|---|
1 | bool | 长度:1字节(8b,8位2进制数),取值范围:true,false(不可用1,0代表true,false) |
注:布尔型无法参与数值运算,也无法与其他类型进行转换。
1.2 数字类型
- 整型与无符号整型
Go语言也有基于架构的类型,例如int、uint和uintptr。
序号 | 类型 | 描述 |
---|---|---|
1 | 8位整型int8/uint8 | 长度:1字节(8b,8位2进制数,2^8);取值范围:-128 ~ 127 / 0 ~ 255(对于有符号数,负数部分:-(2位数/2),0占1个数,正数部分:(2位数/2)- 1,即 -(2^位数/2) ~(2^位数/2)- 1) |
2 | 16位整型int16/uint16 | int16对应C语言中的short型,长度:2字节;取值范围:- 2^16/2 ~ 2^16/2 - 1 / 0 ~ 2^16 - 1 |
3 | 32位整型int32/uint32 | 长度:4字节;取值范围:- 2^32/2 ~ 2^32/2 - 1 / 0 ~ 2^32 - 1 |
4 | 64位整型int64/uint64 | int64对应C语言中的long型,长度:8字节;取值范围:- 2^64/2 ~ 2^64/2 - 1 / 0 ~ 2^64 - 1 |
注:在实际使用中,slice或者map的元素数量等都可以用int来表示。反之,在二进制传输、读写文件的结构描述时,为了保持文件结构不会受到不同编译目标平台字节长度的影响,不要使用int和uint。
- 浮点型
序号 | 类型 | 描述 |
---|---|---|
1 | float32 | 4字节,32位浮点型数,精确到7位小数 |
2 | float64 | 8字节,64位浮点型数,精确到15位小数。math包中所有函数均适用float64 |
3 | complex64 | 8字节,32位实数和虚数,实部/虚部都是一个float32 |
4 | complex128 | 16字节,64位实数和虚数,实部/虚部都是一个float64。math/cmplx包中所有复数相关的函数均适用complex128 |
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("%f\\n", math.MaxFloat32)
fmt.Printf("%.2f\\n", math.MaxFloat64)
}
- 其他数字类型
以下列出了其他更多的数字类型
序号 | 类型 | 描述 |
---|---|---|
1 | 字节型byte | uint8的别名,等同于uint8使用 |
2 | rune | int32的别名,等同于int32的使用,表示一个Unicode编码 |
3 | 整型int/uint | 根据运行平台,可为32位或64位;取值范围:-2^32/2 ~ 2^32/2 - 1 或 - 2^64/2 ~ 2^64/2 - 1 |
4 | 无符号整型uintptr | 用于存放一个指针值的无符号整型,根据运行平台,可为unit32或unit64 |
1.3 字符串类型
string是值类型。默认初始化值是空字符串,不是nil。
2. 实例
输出各种类型的变量
package main
import (
"fmt"
)
func main() {
var a bool
a = true
var b int8
b = -128
var c rune
c = 100000
var d byte
d = 255
var e uintptr
var f float32
f = -2000.23123
var g complex64
g = 32.12 + 32i
fmt.Println(a, b, c, d, e, f, g)
}
go1.9版本对于数字类型,无需定义int及float32、float64,系统会自动识别。
package main
import "fmt"
func main() {
var a = 1.5
var b = 2
fmt.Println(a,b)
}
字符串去除空格和换行符
package main
import (
"fmt"
"strings"
)
func main() {
str := "这里是 www\\n.runoob\\n.com"
fmt.Println("-------- 原字符串 ----------")
fmt.Println(str)
// 去除空格
str = strings.Replace(str, " ", "", -1)
// 去除换行符
str = strings.Replace(str, "\\n", "", -1)
fmt.Println("-------- 去除空格与换行后 ----------")
fmt.Println(str)
}
在Go中,布尔值的类型为bool,值是true或false,默认为false。
// 全局变量声明
var isActive bool // 默认bool值为false
var enabled, disabled = true, false // 忽略类型的声明
func test() {
var available bool // 一般声明
valid := false // 简短声明
available = true // 赋值操作
}
以上是关于go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 基本数据类型 — 字符串:字符
go语言学习笔记 — 基础 — 基本数据类型 — 原生数据类型:布尔型数字类型(整型与浮点型)字符串类型
go语言学习笔记 — 基础 — 基本数据类型 — 字符串(11):go中的字符串
go语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型