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 布尔类型

序号类型描述
1bool长度:1字节(8b,8位2进制数),取值范围:true,false(不可用1,0代表true,false)

注:布尔型无法参与数值运算,也无法与其他类型进行转换。


1.2 数字类型

  • 整型与无符号整型

Go语言也有基于架构的类型,例如int、uint和uintptr。

序号类型描述
18位整型int8/uint8长度:1字节(8b,8位2进制数,2^8);取值范围:-128 ~ 127 / 0 ~ 255(对于有符号数,负数部分:-(2位数/2),0占1个数,正数部分:(2位数/2)- 1,即 -(2^位数/2) ~(2^位数/2)- 1)
216位整型int16/uint16int16对应C语言中的short型,长度:2字节;取值范围:- 2^16/2 ~ 2^16/2 - 1 / 0 ~ 2^16 - 1
332位整型int32/uint32长度:4字节;取值范围:- 2^32/2 ~ 2^32/2 - 1 / 0 ~ 2^32 - 1
464位整型int64/uint64int64对应C语言中的long型,长度:8字节;取值范围:- 2^64/2 ~ 2^64/2 - 1 / 0 ~ 2^64 - 1

注:在实际使用中,slice或者map的元素数量等都可以用int来表示。反之,在二进制传输、读写文件的结构描述时,为了保持文件结构不会受到不同编译目标平台字节长度的影响,不要使用int和uint。

  • 浮点型
序号类型描述
1float324字节,32位浮点型数,精确到7位小数
2float648字节,64位浮点型数,精确到15位小数。math包中所有函数均适用float64
3complex648字节,32位实数和虚数,实部/虚部都是一个float32
4complex12816字节,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字节型byteuint8的别名,等同于uint8使用
2runeint32的别名,等同于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语言学习笔记 — 基础 — 基本数据类型 — 类型类别:值类型和引用类型

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:遍历字符串

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:修改字符串