【Go语言基础】基本数据类型

【Go语言基础】基本数据类型

Go语言中内置了大量的数据类型,包括基本数据类型和符合数据类型,其中基本数据类型有如下七种:

  • 布尔型:bool
  • 整形:byte,int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64,uintptr
  • 浮点型:float32,float64
  • 复数类型:complex64,complex128
  • 字符型:rune
  • 字符串:string
  • 错误类型:error

除此之外,还提供了以下的复合数据类型:

  • 指针
  • 数组
  • 切片
  • 字典
  • 通道
  • 结构体
  • 接口

本章主要介绍上述的七中基本数据类型中的布尔型,整形,浮点型以及复数类型,对于其他的基本数据类型和复合数据类型会在对应的章节中具体讲解。

1. 布尔型

布尔型由关键字bool表示,可取值为true或者false,如:

var a bool = false
var b bool = true

布尔型通常用于逻辑判断中,在Go语言中布尔型不能与整形进行类型转换。

2. 整形

在Go语言中包含的整形种类比较多,其主要区别是表示数值的长度不同,Go语言中的整形又可以分为两类,一类是有符号的,另一类是无符号的。Go语言整形具体如下表所示:

类型有无符号占用存储空间(字节)值的范围
int8有符号1字节 − 2 7 ~ 2 7 − 1 -2^7~2^7-1 27271
int16有符号2字节 − 2 15 ~ 2 15 − 1 -2^{15}~2^{15}-1 2152151
int32有符号4字节 − 2 31 ~ 2 32 − 1 -2^{31}~2^{32}-1 2312321
int64有符号8字节 − 2 63 ~ 2 63 − 1 -2^{63}~2^{63}-1 2632631
uint8无符号1字节 0 ~ 2 8 − 1 0~2^8-1 0281
uint16无符号2字节 0 ~ 2 16 − 1 0~2^{16}-1 02161
uint32无符号4字节 0 ~ 2 32 − 1 0~2^{32}-1 02321
uint64无符号8字节 0 ~ 2 64 − 1 0~2^{64}-1 02641

除此之外,还有intuintuintptr这三个与平台相关的整形类型,byte类型与uint8类型一致。

3. 浮点型

在Go语言中定义了两个浮点数类型,为float32float64,这两者之间的差别是表示的数值长度不同,float32对应了其他语言中的float类型,而float64对应了其他语言中的double类型。

4. 复数类型

复数类型在Go语言中也有两种类型,分别为complex64complex128,复数是由实部和虚部构成,复数在Go语言中的定义如下所示:

var a complex64 = 1 + 2i
var b = complex(3, 4)
fmt.Println(real(a), imag(a))
fmt.Println(real(b), imag(b))

其中,real()函数用于取复数的实部,imag()函数用于取复数的虚部。

5. 数据运算

数据运算包括数值运算,比较运算和位运算。

5.1. 数值运算

Go语言支持的数值运算包括:+,-,*,/和%:

func main() {
	var a int = 5
	var b int = 2
	fmt.Println("a + b = ", a + b)  // 7
	fmt.Println("a - b = ", a - b)  // 3
	fmt.Println("a * b = ", a * b)  // 10
	fmt.Println("a / b = ", a / b)  // 2
	fmt.Println("a % b = ", a % b)  // 1
}

5.2. 比较运算

Go语言支持的比较运算包括:>,<,==,>=,<=和!=,如:

func main() {
	var a int = 5
	var b int = 2
	fmt.Println("a > b ? ", a > b)  // true
	fmt.Println("a < b ? ", a < b)  // false
	fmt.Println("a == b ? ", a == b)  // false
	fmt.Println("a >= b ? ", a >= b)  // true
	fmt.Println("a <= b ? ", a <= b)  // false
	fmt.Println("a != b ? ", a != b)  // true
}

5.3. 位运算

Go语言支持的位运算包括:左移<<,右移>>,异或^,与&,或|,取反^,如:

func main() {
	var a int = 5
	var b int = 2
	fmt.Println("a << b = ", a << b)  // 20
	fmt.Println("a >> b = ", a >> b)  // 1
	fmt.Println("a ^ b = ", a ^ b)  // 7
	fmt.Println("a & b = ", a & b)  // 0
	fmt.Println("a | b = ", a | b)  // 7
	fmt.Println(" ^a = ", ^a)  // -6
}

Read more

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk
超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk