Go语言基础数据类型讲解(带实例)

Go语言 有丰富的数据类型, 除了基本的 整形、浮点型、布尔型、字符串型,还有数组、切片、struct、函数、map、通道(channel)等。总体来说,Go语言的基本数据类
型和其他语言大同小异。

整型

整型分为有符号整型和无符号整型两类

有符号整型 无符号整型
int8 uint8
int16 uint16
int32 uint32
int64 uint64

其中, uint8 对应 byte 类型, int16 对应 c语言short 类型, int64 对应 C语言 中的 long 类型。

实例:

//有符号整型
var num int //可以是负数
num = -32
fmt.Println(num)	// 结果为: -32

//无符号整型
var age uint //不能是负数, 赋值负数报错
age = 18
fmt.Println(age)	// 结果为: 18

//无符号整型
var u_num uint //不能是负数, 赋值负数报错
u_num = -18
fmt.Println(u_num)	// 结果报错: cannot use -18 (untyped int constant) as uint value in assignment (overflows)

此外, 还有三种特殊整型:

uint: 在 32位操作系统中相当于 uint32, 在 64位操作系统中相当于 uint64
int: 在 32位操作系统中相当于 int32, 在 64位操作系统中相当于 int64
uintptr: 无符号整形, 用于存放一个指针, 在 32位操作系统中相当于 uint32, 在 64位操作系统中相当于 uint64

浮点型

Go语言 支持 float32float64两种变量, 其数据格式遵循 IEEE 754 标准

float32: 最大值约为3.4 * 10^38, 可以使用常量 math.MaxFloat32 表示
float64: 最大值约为1.8 * 10^308, 可以使用常量 math.MaxFloat64 表示
注意: 使用类型推断方式声明浮点数型变量时, 变量会被推断为 float64

实例:

	var f float64
	f = 3.14
	fmt.Println(f)	// 结果为3.14

复数

Go语音 内置的复数为 complex64complex128 。其使用两个浮点数表示复数的实部和虚部, complex64 的实部和虚部都是 float32complex128 的实部和虚部都是 float64

实例

//注意: 复数输出时, 程序会以括号表示这是一个复数
var c1 complex128
c1 = 1 + 2i
c2 := 2 + 4i
fmt.Println(c1, c2)

并且 Go语言 内置了三个与复数操作相关的函数

实例:

c := complex(1.2, 3.4)	// 构造复数 c (1.2 + 3.4i)
fc1 := real(c)	// 获取到实部 1.2
fc2 := imag(c)	// 获取到虚部 3.4

字面量

Go语言 支持 二进制十进制, 八进制, 十六进制 浮点数的格式定义数字

实例

v1 := 0b11   //二进制
v2 := 0o11 //八进制
v3 := 0x522  //十六进制

fmt.Println(v1, v2, v3)	//得到结果 5 9 82

布尔型

Go语言的布尔类型变量的默认值为 false, 且Go语言不允许将整形强制转换为布尔型
布尔型无法参与数值运算, 也无法与其他类型相互转换

实例:

var no bool
ok := true
fmt.Println(no, ok)  // false, true

字符类型

组成每个字符串的元素叫作字符, 可以通过遍历或当获取字符串元素获得。使用单引号声明
Go语言的字符有两种类型, 其中 byte 代表 ASCII 码的一个字符, rune 表示一个utf-8字符
byterune 本质上都是整型, 为了方便编程, Go语言给出了两个别名
其中 byteuint8 的别名, runeint32 的别名

实例:

var b1 = 'a'      // 字符变量默认类型为 rune 型
var b2 byte = 'b' // byte型, 本质上是 uint8
b3 := '鲲'         // rune 型, 本质上是 int32
fmt.Println(b1, b2, b3)		// a, b, 鲲

字符串类型

Go语言

单行字符串 以双引号(" ")定义

多行字符 以反引号(`)定义

Go语言字符串的内部使用 utf-8 编码实现, 可以在源码中直接添加非 ASCII

实例:

var s1 string = "马頔" // 定义单行字符串
var s2 string = `在冰雪融化的
早晨`
fmt.Println(s1)
fmt.Println(s2)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值