go 语言数据类型以及整型

数据类型介绍

在 Go 语言中,数据类型定义了变量可以存储的数据种类。每个变量都有明确的数据类型,这决定了变量所占用的内存大小、能存储的数据范围以及可以对其进行哪些操作。Go 的数据类型主要分为内置(基本)数据类型和复合(派生)数据类型两大类。

基本数据类型:

数值型:

整数型基本数据类型复杂数据类型

: (int,int8,int16,int32,int64,uint,uint8,uint16uint32,uint64,byte))
浮点型:(float32,float64)
字符型:(没有单独的字符型,使用byte来保存单个字母字符)
布尔型:(bool)
字符串:(string)
整数类型(int,int8,int16,int32,int64,uint,uint8,uint16uint32,uint64,byte)
浮点类型float32(,float64): 底层存储空间与操作系统无关,会丢失精度,底层存储分别有符号位和指数位,尾数位尾数位只存一个大概。可能出现精度损失

派生数据类型:
指针
数组
结构体
管道
函数
切片
接口
map

一、内置数据类型

1. 布尔类型

  • bool
    • 只有两个值:truefalse
    • 示例:

      var flag bool = true

       

     

2. 数值类型

数值类型又分为整数、浮点数和复数。

2.1 整数类型

  • 有符号整数int, int8, int16, int32, int64

    • int 的大小取决于平台(32 位系统通常为 32 位,64 位系统通常为 64 位)。
    • 示例:
    • var a int = -10
      var b int8 = 100  

        

          

         无符号整数uint, uint8, uint16, uint32, uint64, uintptr

  • 无符号整数只能表示非负数。
var u uint = 10
var u8 uint8 = 255

 

2.2 浮点数类型

  • 浮点数float32float64
    • float64 是默认的浮点数类型,精度更高。

      

var pi float64 = 3.1415926535

2.3 复数类型

  • 复数complex64complex128
    • 复数由实部和虚部组成,例如:
var c complex128 = complex(1.2, 3.4)
fmt.Println(c) // 输出 (1.2+3.4i)

 

3. 字符串类型

  • string
    • 字符串是不可变的 Unicode 字符序列
1
var s string = "Hello, Go!"

  

整数介绍

在 Go 语言中,整数类型用于表示没有小数部分的数值。Go 提供了多种整数类型,主要分为有符号整数和无符号整数两大类。下面详细介绍这些类型:


有符号整数

这些类型可以表示正数、负数和零。

  • int8

    • 占用 1 个字节
    • 范围:-128 ~ 127
  • int16

    • 占用 2 个字节
    • 范围:-32,768 ~ 32,767
  • int32

    • 占用 4 个字节
    • 范围:-2,147,483,648 ~ 2,147,483,647
    • 在 Go 中,int32 也常用来表示 Unicode 字符(即 rune 类型)。
  • int64

    • 占用 8 个字节
    • 范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • int

    • 根据不同平台,其大小可能是 32 位或 64 位
    • 通常在 64 位系统上与 int64 相同,在 32 位系统上与 int32 相同
    • 常用作默认整数类型

无符号整数

这些类型只表示非负数。

  • uint8

    • 占用 1 个字节
    • 范围:0 ~ 255
    • 也称为 byte 类型
  • uint16

    • 占用 2 个字节
    • 范围:0 ~ 65,535
  • uint32

    • 占用 4 个字节
    • 范围:0 ~ 4,294,967,295
  • uint64

    • 占用 8 个字节
    • 范围:0 ~ 18,446,744,073,709,551,615
  • uint

    • 根据平台不同,其大小可能为 32 位或 64 位
    • 用法与 int 类似,但只用于非负数
  • uintptr

    • 用于存储指针地址的无符号整数类型

示例代码

以下示例展示了不同整数类型的声明和使用:

复制代码
package main

import (
    "fmt"
)

func main() {
    // 有符号整数示例
    var a int = -100      // 默认 int 类型
    var b int8 = 127      // int8 最大值
    var c int16 = -30000  // int16 示例
    var d int32 = 2147483647  // int32 最大值
    var e int64 = -9223372036854775808 // int64 最小值

    // 无符号整数示例
    var f uint = 100      // 默认 uint 类型
    var g uint8 = 255     // uint8 最大值
    var h uint16 = 65000  // uint16 示例
    var i uint32 = 4294967295  // uint32 最大值
    var j uint64 = 18446744073709551615 // uint64 最大值

    fmt.Println("有符号整数:")
    fmt.Println("a (int):", a)
    fmt.Println("b (int8):", b)
    fmt.Println("c (int16):", c)
    fmt.Println("d (int32):", d)
    fmt.Println("e (int64):", e)

    fmt.Println("\n无符号整数:")
    fmt.Println("f (uint):", f)
    fmt.Println("g (uint8):", g)
    fmt.Println("h (uint16):", h)
    fmt.Println("i (uint32):", i)
    fmt.Println("j (uint64):", j)
}
执行结果
PS D:\golang\goproject> go run src\尚硅谷\chget1\deay1\demo1\main4.go
有符号整数:
a (int): -100
b (int8): 127
c (int16): -30000
d (int32): 2147483647
e (int64): -9223372036854775808

无符号整数:
f (uint): 100
g (uint8): 255
h (uint16): 65000
i (uint32): 4294967295
j (uint64): 18446744073709551615
View Code
复制代码

 


小结

  • 整数类型在 Go 语言中是基本数据类型,用于存储整数值。
  • 有符号整数(如 int、int8、int16、int32、int64)可以表示正数、负数和零。
  • 无符号整数(如 uint、uint8、uint16、uint32、uint64)只表示非负数。
  • 选择合适的整数类型可以帮助你节省内存和确保数值范围正确,通常在不需要特别小数值范围时,直接使用默认的 intuint 类型即可。

查看一个变量的类型

复制代码
package main
import "fmt"
func main(){
    w := 8
    fmt.Printf("w的类型%T",w)
}
执行结果
PS D:\golang\goproject> go run src\尚硅谷\chget1\deay1\demo1\main5.go
w的类型int
复制代码

 

如何查看变量占用字节大小,以及数据类型

复制代码
package main
import (
    "fmt"
    "unsafe"
)
func main(){
    w := 8
    fmt.Printf("w的类型%T\n",w)

    //unsafe.Sizeof(w)是unsafe包的一个函数可以返回w变量占用的字节数
    fmt.Printf("w的类型%T w占用字节数%d", w, unsafe.Sizeof(w))
}

执行结果

PS D:\golang\goproject> go run src\尚硅谷\chget1\deay1\demo1\main5.go
w的类型int
w的类型int w占用字节数8
复制代码

 

posted @   烟雨楼台,行云流水  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示