Go语言基础 - 基本数据类型

1,166 阅读4分钟

Go语言基本数据类型

Go语言中的基础数据类型包括以下几种:

  1. 整型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64等。其中int和uint类型的长度根据编译器位数而变化。
  2. 浮点型:float32、float64。
  3. 复数型:complex64、complex128。
  4. 布尔型:bool,取值为true或false。
  5. 字符串型:string。
  6. 字节型:byte、rune。其中byte等同于uint8,rune等同于int32,用于表示UTF-8字符串的Unicode码点。

除此之外,Go语言还有指针类型(pointer)、数组类型(array)、切片类型(slice)、结构体类型(struct)、接口类型(interface)、函数类型(function)等复合数据类型。

代码实践

package main
import ("fmt")
func main() {
	// bool 布尔类型  true 或false
	var a bool = true
	fmt.Println(a)

	// int 有符号整型, 32位操作系统为4字节
	var b int = -100
	fmt.Println(b)

	//  int8 有符号 8位整型 (-128 到 127)
	var c int8 = -128
	fmt.Println(c)

	// int16 有符号  16位整型  (-32768 到 32767)
	var d int16 = -32768
	fmt.Println(d)

	// int32 有符号  32位整型   (-2147483648 到 2147483647)
	var e int32 = -214743648
	fmt.Println(e)

	// int64 有符号 64位整型    (-9223372036854775808 到 9223372036854775807)
	var f int64 = -9223372036854775808
	fmt.Println(f)

	// uint8 无符号8位整型   (0 到 255)
	var h uint8 = 255
	fmt.Println(h)

	// uint16 无符号16位整型  (0 到 65535)
	var i uint16 = 65535
	fmt.Println(i)

	// uint32 无符号32位整型   (0 到 4294967295)
	var j uint32 = 4294967295
	fmt.Println(j)

	// uint64 无符号64位整型    (0 到 18446744073709551615)
	var k uint64 = 18446744073709551615
	fmt.Println(k)

	// float32 单精度浮点数
	var l float32 = 3.1459
	fmt.Println(l)

	// float64 双精度浮点数
	var m float64 = 3.1415926535
	fmt.Println(m)

	// complex64 32位实数与虚数    由float32类型的实部和虚部组成
	var n complex64 = 3 + 4i
	fmt.Println(n)

	// comlex128 64位实数和虚数   由float64类型的实部和虚部组成
	var o complex128 = 3 + 4i
	fmt.Println(o)

	// byte unit8的别名,用于表示一个ASCII码字符
	var p byte = 'a'
	fmt.Println(p)

	// rune int32的别名, 用于表示一个Unicode码字符
	var q rune = '国'	
	fmt.Println(q)

	// string 字符串类型   存储任意长度的字符序列
	var r string = "hello world!"
	fmt.Println(r)
}

image.png

int和unit的区别

相同点:

  • int 和 uint 都是 Go 语言中用来表示整数的数据类型。

不同点:

  • int 类型是带符号的整数类型,而 uint 类型是无符号的整数类型。
  • int 类型的取值范围(2n1-2^{n-1}2n112^{n-1}-1)根据机器的位数而定,而 uint 类型的取值范围为 0 到最大值(0 到 2n12^n-1)。
  • 在进行运算时,如果两个操作数的类型不同,Go 语言会将其中一个操作数转换成另一个操作数的类型。

建议:

  • 在不需要负数的情况下,建议使用 uint 类型;否则,建议使用 int 类型。

总结

  • 整型: 整型包括有符号整型 int 和无符号整型 uint,以及它们的不同位数的类型 int8、int16、int32、int64、uint8、uint16、uint32 和 uint64。int 类型是根据机器位数而定的带符号整型,取值范围为 2n1-2^{n-1}2n112^{n-1}-1。uint 类型是无符号整型,取值范围为 0 到 2n12^n-1

  • 浮点型:Go 语言提供了 float32 和 float64 两种浮点型,分别用于表示单精度和双精度浮点数。float32 类型的精度约为 6 位小数,float64 类型的精度约为 15 位小数。

  • 复数型:Go 语言提供了 complex64 和 complex128 两种复数型,分别用于表示单精度和双精度复数。复数类型可以通过内置函数 real 和 imag 获取实部和虚部。

  • 字符串:Go 语言中的字符串是不可变的,可以使用双引号或反引号表示字符串字面值。在双引号中,可以使用转义字符表示特殊字符,例如 "\n" 表示换行符。在反引号中,可以表示多行字符串,其中的换行符和空格会被保留。

  • 布尔型:Go 语言提供了 bool 类型,用于表示真和假两个值。布尔型的值可以通过逻辑运算符 &&(与)、||(或)、!(非)组合得到。

在使用这些基本数据类型时,需要注意类型转换、类型别名等细节,以避免类型错误和溢出等问题。