Go的基本数据类型

整数

与其他程序设计语言一样,Go的整型也分为有符号整型和无符号整型两类。有符号整型有int、int8、int16、int32、int64;无符号整型有uint、uint8、uint16、uint32、uint64、uintptr。上述整型中,后面带数字的整型有明确的大小,数字即代表比特位。int、uint、uintptr的大小并不明确,或者说与编译器相关。uintptr足以完整存放指针,仅用于底层编程,例如在Go程序与C程序库或操作系统的接口层。int、uint在特定平台上与原生的有符号整数/无符号整数相同,或等于该平台上的运算效率最高的值。

此外,rune类型是int32的同义词,常常用于指明一个值是Unicode码点(code point)。同样,byte类型是int8的同义词,强调一个值是原始数据,而非量值。

浮点数

Go有两种大小的浮点数:float32和float64,其算术特性遵从IEEE754标准。十进制下,float32的有效数字大约是6位,float64的有效数字大约是15位。通常情况下应优先选用float64,因为浮点数在计算机中的表示特点决定了浮点数运算存在误差,float32能精确表示的范围有限。

浮点数可以通过Printf的谓词%g输出,该谓词会自动保持足够的精度,并选择最简洁的表示方式。也可以使用%e(有指数)或%f(无指数)来进行特定表示。与C语言相同,这三个谓词都能指定输出宽度和数值精度。

复数

Go有两种大小的复数:complex64和complex128,二者分别由float32和float64构成。内置的complex函数根据给定的实部和虚部创建复数,而内置的real函数和imag函数则分别提取复数的实部和虚部。

var x complex128 = complex(1, 2) //1+2i
fmt.Println(x, real(x), imag(x)) //输出结果为 (1+2i) 1 2

布尔型

布尔型的变量只有两种可能的值:true和false。与C/C++不同的是,Go语言的布尔值无法隐式转换为整数,反之而已不行。因此如果转换操作经常用到,就需要自行实现转换函数。

func btoi(b bool) int {
    if b {
        return 1
    }
    return 0
}

func itob (i int) bool {
    return i != 0
}

字符串

C/C++中字符串是一种由字符型(char)组成的复合类型,而在Go中的字符串是一种基本数据类型。

字符串是不可变的字节序列,它可以包含任意数据,包括0值字节。内置的len函数返回字符串的字节数而非字符数。Go原生支持Unicode字符(UTF-8),而一个UTF-8字符可能占1~4个字节,因此字符串的第i个字节不一定就是第i个字符。

s := "Hello,世界"
fmt.Println(len(s)) //len函数的返回值为12而非8

尽管可以将新值赋值给字符串类型的变量,但字符串值无法改变:字符串值是一个字面值常量,字节序列永不可变。这意味着两个字符串能安全地共用同一段底层内存,使得复制任何长度字符串的开销都比较低。如下例所示的字符串s及其子串共用一部分内存:

s := "Hello World"
t := s[:5]

 

                                                                                                                                           本文部分内容摘自《Go程序设计语言》

引用\[1\]提供了关于Golang的四大数据类型及基本类型的介绍。其中,基本类型包括数字类型、布尔型和字符串类型。数字类型包括整型和浮点型,还有其他数字类型。布尔型的值只能是常量true或false。字符串类型分为解释字符串和非解释字符串。引用\[2\]进一步解释了Golang的基本类型、复合类型、引用类型和接口类型。基本类型包括数字、字符串和布尔型。复合类型包括数组和结构体,用于表示更复杂的数据结构。引用类型包括指针、切片、映射、通道、接口和函数类型。引用类型的变量被称为标头值。字符串也是一种引用类型。引用\[3\]提到了Golang常量的特点。虽然常量可以有确定的基本类型,但许多常量没有明确的基本类型。编译器为这些常量提供了比基本类型更高精度的算术运算。无类型的常量包括无类型的布尔型、无类型的整数、无类型的字符、无类型的浮点数、无类型的复数和无类型的字符串。无类型的常量不仅提供更高的运算精度,还可以直接用于更多的表达式而不需要显式的类型转换。 所以,Golang的基本数据类型包括数字类型、布尔型和字符串类型。同时,Golang还有复合类型、引用类型和接口类型。 #### 引用[.reference_title] - *1* *2* [Golang数据类型](https://blog.csdn.net/MatChen/article/details/114639964)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Golang(六)[基础数据类型]](https://blog.csdn.net/weixin_42366378/article/details/105003056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值