go语言中的整型

int

int:有符号整数类型,根据当前系统架构可能为 32 位或 64 位。
math.MinInt32 到 math.MaxInt32 或 math.MinInt64 到 math.MaxInt64。

package main

import (
	"fmt"
)

func main() {
	var a int = 10
	var b int8

	// int 转 int8
	b = int8(a)
	fmt.Printf("int8 value: %d\n", b)

	// int8 转 int
	a = int(b)
	fmt.Printf("int value: %d\n", a)
}

运行结果:

int8 value: 10
int value: 10

int8

int8:有符号 8 位整数类型。
-128 到 127。

package main

import (
	"fmt"
)

func main() {
	var a int8 = 100
	var b int16

	// int8 转 int16
	b = int16(a)
	fmt.Printf("int16 value: %d\n", b)

	// int16 转 int8
	a = int8(b)
	fmt.Printf("int8 value: %d\n", a)
}

运行结果:

int16 value: 100
int8 value: 100

int16

int16:有符号 16 位整数类型。
-32768 到 32767。

package main

import (
	"fmt"
)

func main() {
	var a int16 = 1000
	var b int32

	// int16 转 int32
	b = int32(a)
	fmt.Printf("int32 value: %d\n", b)

	// int32 转 int16
	a = int16(b)
	fmt.Printf("int16 value: %d\n", a)
}

运行结果:

int32 value: 1000
int16 value: 1000

int 32

int32:有符号 32 位整数类型。
-2147483648 到 2147483647。

package main

import (
	"fmt"
)

func main() {
	var a int32 = 10000
	var b int64

	// int32 转 int64
	b = int64(a)
	fmt.Printf("int64 value: %d\n", b)

	// int64 转 int32
	a = int32(b)
	fmt.Printf("int32 value: %d\n", a)
}

运行结果:

int64 value: 10000
int32 value: 10000

int 64

int64:有符号 64 位整数类型。
-9223372036854775808 到 9223372036854775807。

package main

import (
	"fmt"
)

func main() {
	var a int64 = 100000
	var b int32

	// int64 转 int32
	b = int32(a)
	fmt.Printf("int32 value: %d\n", b)

	// int32 转 int64
	a = int64(b)
	fmt.Printf("int64 value: %d\n", a)
}

运行结果:

int32 value: 100000
int64 value: 100000

uint

uint:无符号整数类型,根据当前系统架构可能为 32 位或 64 位。
0 到 math.MaxUint32 或 0 到 math.MaxUint64。

package main

import (
	"fmt"
)

func main() {
	var a uint = 100
	var b uint8

	// uint 转 uint8
	b = uint8(a)
	fmt.Printf("uint8 value: %d\n", b)

	// uint8 转 uint
	a = uint(b)
	fmt.Printf("uint value: %d\n", a)
}

运行结果:

uint8 value: 100
uint value: 100

uint 8

uint8:无符号 8 位整数类型。
0 到 255。

package main

import (
	"fmt"
)

func main() {
	var a uint8 = 200
	var b uint16

	// uint8 转 uint16
	b = uint16(a)
	fmt.Printf("uint16 value: %d\n", b)

	// uint16 转 uint8
	a = uint8(b)
	fmt.Printf("uint8 value: %d\n", a)
}

运行结果:

uint16 value: 200
uint8 value: 200

uint 16

uint16:无符号 16 位整数类型。
0 到 65535。

package main

import (
	"fmt"
)

func main() {
	var a uint16 = 1000
	var b uint32

	// uint16 转 uint32
	b = uint32(a)
	fmt.Printf("uint32 value: %d\n", b)

	// uint32 转 uint16
	a = uint16(b)
	fmt.Printf("uint16 value: %d\n", a)
}

运行结果:

uint32 value: 1000
uint16 value: 1000

uint 32

uint32:无符号 32 位整数类型。
0 到 4294967295。

package main

import (
	"fmt"
)

func main() {
	var a uint32 = 10000
	var b uint64

	// uint32 转 uint64
	b = uint64(a)
	fmt.Printf("uint64 value: %d\n", b)

	// uint64 转 uint32
	a = uint32(b)
	fmt.Printf("uint32 value: %d\n", a)
}

运行结果:

uint64 value: 10000
uint32 value: 10000

uint 64

uint64:无符号 64 位整数类型。

package main

import (
	"fmt"
)

func main() {
	var a uint64 = 100000
	var b uint32

	// uint64 转 uint32
	b = uint32(a)
	fmt.Printf("uint32 value: %d\n", b)

	// uint32 转 uint64
	a = uint64(b)
	fmt.Printf("uint64 value: %d\n", a)
}

运行结果:

uint32 value: 100000
uint64 value: 100000

uintptr

package main

import (
	"fmt"
)

func main() {
	var a uintptr = 123456
	var b uint64

	// uintptr 转 uint64
	b = uint64(a)
	fmt.Printf("uint64 value: %d\n", b)

	// uint64 转 uintptr
	a = uintptr(b)
	fmt.Printf("uintptr value: %d\n", a)
}

运行结果:

uint64 value: 123456
uintptr value: 123456

uintptr 是一个无符号整数类型,用于保存指针的值。虽然在 Go 语言中可以将 uintptr 类型的值转换为 uint64 类型,但这并不意味着 uintptr 类型的值本身就是指针的值。

在 Go 语言中,uintptr 类型主要用于在指针和整数之间进行转换,但这种转换是不安全的,因为它可能导致指针的失去类型信息或者破坏指针的语义。因此,在正常的开发中,应该避免直接使用 uintptr 类型来处理指针。

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	var p *int
	var ptr uintptr
	var num uint64

	i := 10
	p = &i

	// 将指针转换为 uintptr
	ptr = uintptr(unsafe.Pointer(p))
	fmt.Printf("uintptr value: %d\n", ptr)

	// 将 uintptr 转换为 uint64
	num = uint64(ptr)
	fmt.Printf("uint64 value: %d\n", num)
}

运行结果:

uintptr value: 824634199880
uint64 value: 824634199880
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

namedlock

您的鼓励是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值