go语言之数据类型

本文详细介绍了Go语言中的数据类型,包括整数(有/无符号、int与int32的区别)、浮点数(float32与float64)、复数、布尔值、常量和无类型常量(字面量),以及各类运算符的优先级和结合性。重点突出了不同类型的定义、用法和转换规则。
摘要由CSDN通过智能技术生成

分类

Go的数据类型分为四大类:

  • 基础类型。数字、字符串、布尔型
  • 聚合类型。数组、结构体
  • 引用类型。指针、slice、map、函数、管道
  • 接口类型。

整数

Go原生的整数分为有符号和无符号:

  • 有符号:int8、int16、int32、int64

  • 无符号:uinit8、uint16、uint32、uint64

除了原生类型,Go还有一些衍生整数:

  • int/uint,这两者大小相同,其字节长度取决于硬件平台和编译器,长度为:32位或64位。一般是该平台上运算效率最高的类型
  • rune,与int32是同义词,通常用来表示一个Unicode码点
  • byte,与unit8是同义词,
  • uintptr,大小不确定与平台和编译器有关,但足以存放指针(每个平台指针的字节长度也不一样)。仅用于底层编程,如与C程序库交互的地方。

注意:即便intint32是相似的类型,但也是不同的类型,如果int值想当做int32使用,必须进行显示类型转换。

浮点数

浮点数有两种类型:

  • float32,数值范围(-3.4e38, -1.4e-45, 0, 1.4e-45, 3.4e38)
  • float64,数值范围(-1.8e308,-4.9e-324, 0, 4.9e-324, 1.8e308)

在math包中记录了两种类型的最大值。绝大多数下优先选择float64,float32精度低累计误差较大(除非可控)。

浮点数常量的表示:

  • 小数点前数字可省略,.234
  • 小数点后数字可省略,23.
  • 科学计数法,2e23, 4E23,非常大或者非常小的值建议使用此方式

NaN,表示科学上无意义的运算结果,如0/0,sqrt(-1),通过match.IsNaN() 函数判断一个变量或表达式的值是否为NaN。

复数

go支持两种类型的复数:

  • complex64,由float32构成
  • complex128,有float64构成

复数常量的表示:

  • 纯虚数,如:5i
  • 复数,如:1+4i

布尔值

布尔类型 :bool,只有两个取值truefalse

&&运算和||运算时具有短路行为特性的:如果运算符左边的操作数已经能直接确定总体结果,那右边的操作数不会计算。

bool无法隐式转换成整型,反之也不行。

常量(const变量)

常量是一种表达式,所有常量基本都属于基本类型:

  • 布尔型
  • 字符串
  • 数字(整型、浮点、复数)

常量在语法上与变量类似,只是值恒定不变,其值在编译阶段得到(常量在编译时会使用具体值替换)。

const name string= "Jim"
const pi = 3.14159	 // 定义了常量 pi,没有指定类型根据值决定类型

对于常量的操作其结果依然是常量,如数学运算、逻辑运算、比较运算。

如果指定一组常量,除第一项之外其他项可以省略赋值,默认使用前一项的值:

const (
	a = 1
	b  //  默认使用a的值
	c = 2 
	d // 默认使用c的值
)

常量生成器 iota

iota从0开始取值,逐项加1:

const(
	red int = iota  // red 取值 0
    blue  // 取值iota,为1
    yellow // 取值iota,为2
)

无类型常量(字面量)

golang中的无类型常量其实就是字面量的意思。一共分为六种:

  • 无类型布尔(布尔字面量,默认类型bool):true/false
  • 无类型整数(整数字面量,默认类型int):12、45、3456等
  • 无类型浮点数(浮点字面量,默认类型float64):0.0、123.44等
  • 无类型复数(复数字面量,默认类型complex128):0i、23+31i
  • 无类型文字符号(字符字面量,默认类型rune):\u0000
  • 无类型字符串(字符串字面量,默认类型string):“hello, 世界”

将无类型常量赋值给变量时,会隐式转换为该变量类型:

var f float64 = 3+4i  // 将复数 隐式转换为 float64
f = 2 // 将2 隐式转换为float64

// 没有指定变量类型时,无类型常量会被隐式转换为默认类型
i := 23  // 23 被默认转换为 int,i也为int
f := 23.4 // 23.4 被默认转换为float64,f也为float64


运算符

优先级运算符结合性备注
1^(取反)、!(取非)自右向左
2* 、/、%(取余)、<<、>>、&(按位与)、&^(位清空)自左向右取余只对整数有效
3+、-、|、^(异或)自左向右
4==、|=、<、<=、>、>=自左向右
5&&自左向右
6||自左向右
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值