【Go语言之路 基础篇】Go的基本数据类型

在这里插入图片描述

bool 布尔类型

布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true

数值类型

1. 整数型

有符号:

  • int8 有符号 8 位整型 (-128 到 127) 长度:8bit
  • int16 有符号 16 位整型 (-32768 到 32767)
  • int32 有符号 32 位整型 (-2147483648 到 2147483647)
  • int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

有符号数,会拿第一位来表示正负

  • 00000001: 1
  • 10000001: -1

无符号:

  • uint8 无符号 8 位整型 (0 到 255) 8位都用于表示数值:
  • uint16 无符号 16 位整型 (0 到 65535)
  • uint32 无符号 32 位整型 (0 到 4294967295)
  • uint64 无符号 64 位整型 (0 到 18446744073709551615)

为什么go语言比python有这么多种类型?

  • 很多场景之下,数字有上限,我们可以选择合适的数据类型来降低内存的占用
  • 对于python来说,int占用字节是动态的,python的int我们不用担心超过上限
  • go语言,int是一种动态,取决于机器本身是多少位,64位机器上运行,int就是int64,如何是32位机器上,就是4个字节int32
var age int = 18
fmt.Println(unsafe.Sizeof(age))

2. 浮点型

  • float32 32位浮点型数
  • float64 64位浮点型数

为什么64位的float最大值远大于int64, float底层存储和int的存储不一样
float32和float64两者占用内存不一样,64位的最大数和精度都比32位高
默认使用的是float64

3. 复数

4. byte字节

  • byte 等于 uint8
type byte = uint8

5. rune类型

  • rune 等于 int32
type byte = uint32

字符

Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。

package main

import (
	"fmt"
)

func main() {

	var a byte
	a = 'a' // 单引号
	//输出ascii对应码值 
	fmt.Println(a)
	fmt.Printf("a=%c", a)
}
// 输出
// 97
// a=a

字符常量只能使用单引号括起来,例如:var a byte = 'a' var a int = 'a'

package main

import (
	"fmt"
)

func main() {

	var a byte
	a = "a" //双引号
	//输出ascii对应码值
	fmt.Println(a)
	fmt.Printf("a=%c", a)
}
// 报错!!!cannot use "a" (type untyped string) as type byte in assignment

字符本质是一个数字, 可以进行加减乘除

package main

import (
	"fmt"
	"reflect"
)

func main() {

	a := 'a'

	//这里注意一下 
	// 1. a+1可以和数字计算 
	// 2. a+1的类型是32 
	// 3. int类型可以直接变成字符

	fmt.Println(reflect.TypeOf(a+1))
	fmt.Printf("a+1=%c", a+1)
}
// 输出
// int32
// a+1=b

字符串

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小叶柏杉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值