尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【Go语言基础【2】】数据类型之基础数据类型:数字、字符、布尔、枚举、自定义
文章目录一、数据类型体系总览二、整型Integer Types三、浮点型Floating-Point Types四、字符与字符串Character String1. 字符byte rune 2. 字符串string 五、布尔类型Boolean六、枚举类型借助 iota 实现七、自定义类型type 声明 (用于基础类型封装)一、数据类型体系总览Go 语言的数据类型可分为基础类型与派生类型如切片、映射、通道等基础类型是构建程序数据的“原子单元”涵盖整型浮点型复数型字符与字符串布尔类型枚举借助iota实现自定义类型二、整型Integer Types用于存储整数分有符号int系列 和无符号uint系列 按字节宽度细分适配不同数值范围需求。类型名、字节宽度、取值范围对应关系类型名字节宽度取值范围有符号/无符号说明int平台相关32 位系统 4 字节-2¹⁵ ~ 2¹⁵-1 64 位系统 8 字节-2³¹ ~ 2³¹-1 通用整型适配平台代码移植常用uint平台相关32 位系统 4 字节0 ~ 2¹⁶-1 64 位系统 8 字节0 ~ 2³²-1 通用无符号整型int81 字节-128 ~ 127有符号精准控制内存适合小范围数值int162 字节-32768 ~ 32767有符号int324 字节-2147483648 ~ 2147483647有符号可存储 Unicode 码点如rune底层类型 int648 字节-9223372036854775808 ~ 9223372036854775807有符号适合存储大整数如时间戳、高精度计数 uint81 字节0 ~ 255无符号别名byte常用于处理二进制数据、字符uint162 字节0 ~ 65535无符号uint324 字节0 ~ 4294967295无符号uint648 字节0 ~ 18446744073709551615无符号uintptr平台相关32 位系统 4 字节64 位系统 8 字节无符号存储指针地址用于底层内存操作示例代码packagemainimportfmtfuncmain(){varnumIntint100// 通用有符号整型varnumUintuint200// 通用无符号整型varnumInt8int8-50// 1字节有符号varnumUint8uint8200// 1字节无符号别名 byte 场景byte(numUint8) fmt.Printf(int: %d, uint: %d, int8: %d, uint8: %d\n,numInt,numUint,numInt8,numUint8)}三、浮点型Floating-Point Types存储小数遵循IEEE-754标准分float32单精度 、float64双精度 complex64/complex128用于复数含实部、虚部 。类型名、字节宽度、含义对应类型名字节宽度含义典型场景float324 字节IEEE-754 32 位单精度浮点数对精度要求不高、内存敏感场景如简单图形处理 float648 字节IEEE-754 64 位双精度浮点数科学计算、金融等高精度需求场景complex648 字节32 位实部 32 位虚部的复数信号处理、数学计算如电路仿真 complex12816 字节64 位实部 64 位虚部的复数高精度复数运算如量子计算模拟 packagemainimportfmtfuncmain(){varf32float323.1415926// 单精度浮点varf64float643.1415926535// 双精度浮点varc64complex6412i// 复数实部 int 自动转 float32 varc128complex1283.146.28ifmt.Printf(float32: %.7f, float64: %.10f\n,f32,f64)fmt.Printf(complex64: %v, complex128: %v\n,c64,c128)}四、字符与字符串Character String1. 字符byterunebyte别名uint81 字节存储 ASCII 字符如a、0示例varasciiCharbyteA// 存储 ASCII 字符 A 的 ASCII 码值 65rune别名int324 字节存储 Unicode 码点涵盖全球语言字符、表情等 示例varunicodeCharrune中// 存储汉字“中”的 Unicode 码点2. 字符串string核心特性只读的字节序列基于 UTF-8 编码存储字符可包含任意 Unicode 字符。分可解析字符串双引号包裹支持转义 和原生字符串反引号 包裹保留换行、不转义 。转义字符支持\n换行 、\t制表符 、\u{...}Unicode 码点 等如vars1stringHello\nWorld// 可解析字符串含换行转义vars2stringLine 1 Line 2// 原生字符串保留换行常用操作获取长度len(s)按字节数非字符数因 UTF-8 可变长 。索引访问s[0]获取第 1 个字节注意多字节字符需用rune遍历 。拼接s : Hello World。示例代码packagemainimportfmtfuncmain(){varsstring你好Go\u4e2d// 含 Unicode 转义fmt.Println(字符串,s)fmt.Println(长度字节数,len(s))// 遍历字符按 rune 处理多字节字符for_,r:ranges{fmt.Printf(%c ,r)}}五、布尔类型Boolean定义类型为bool值仅true或false占 1 字节零值是false。用途条件判断if、for循环条件 、逻辑运算与、或||、非!。示例packagemainimportfmtfuncmain(){varisTruebooltruevarisFalsebool// 零值为 falsefmt.Printf(isTrue: %v, isFalse: %v\n,isTrue,isFalse)// 逻辑运算fmt.Println(与运算,isTrueisFalse)fmt.Println(或运算,isTrue||isFalse)fmt.Println(非运算,!isTrue)}六、枚举类型借助iota实现核心逻辑iota是 Go 预定义常量生成器在const声明块中从 0 开始逐行递增每行常量声明自动1用于批量定义有规律的常量。基础用法packagemainimportfmtconst(aiota// a 0b// b 1自动继承 iota且 iota 递增c// c 2d// d 3)funcmain(){fmt.Println(a,b,c,d)// 输出0 1 2 3}进阶用法结合位运算、跳过值等 const(Read1iota// 1 0 1二进制 0001 Write// 1 1 2二进制 0010 Exec// 1 2 4二进制 0100 AllRead|Write|Exec// 7二进制 0111 )七、自定义类型type声明 (用于基础类型封装)语法type 新类型名 底层类型可基于基础类型或其他自定义类型创建新类型用于类型封装、语义化标识。作用增强代码可读性如type Gender string明确语义 。实现类型方法为自定义类型绑定专属行为 。示例packagemainimportfmt// 自定义类型基于 string 的 Gender 类型typeGenderstringconst(Male GendermaleFemale Genderfemale)// 为自定义类型绑定方法func(g Gender)Info()string{returnfmt.Sprintf(性别%s,g)}funcmain(){vargender GenderMale fmt.Println(gender.Info())// 输出性别male}
RELATED

相关推荐

如何快速上手AndroidGen-GLM-4-9B:5步实现Android自动化任务

如何快速上手AndroidGen-GLM-4-9B:5步实现Android自动化任务

如何快速上手AndroidGen-GLM-4-9B:5步实现Android自动化任务 想要让AI智能助手帮你自动完成Android手机上的各种操作吗?AndroidGen-GLM-4-9B正是你需要的解决方案!这款由智谱AI开源的Android自动化AI代理模型,基于强大的GLM-4-9B架…

📅 2026/11/3 9:16:21
【高等数学】【第四章】【综合习题】:多元函数微分学

【高等数学】【第四章】【综合习题】:多元函数微分学

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/3 9:16:21
【高等数学-第三章】【综合习题1】一元函数积分学及其应用

【高等数学-第三章】【综合习题1】一元函数积分学及其应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/3 9:16:21
MORE NEWS

更多资讯

📰

动态规划与Trie树优化:高效解决单词拆分问题

1. 问题背景与核心挑战 "单词拆分"是算法领域一个经典问题,题目通常给出一个字符串s和一个单词字典wordDict,要求判断s是否能被拆分成一个或多个字典中出现的单词。这个问题看似简单,却涉及动态规划、回溯算法、前缀树等多种解法&a…

📰

2026无缓存泛目录站群程序架构解析与优化

1. 项目概述:2026年最新泛目录站群程序源码解析 这套开源站群程序最吸引我的地方在于"无缓存版"设计。传统站群系统为了追求性能,往往采用预生成静态页面的方式,但这会导致内容更新延迟。而无缓存架构意味着所有页面都是实时动态生…

📰

动态规划解决单词拆分问题:算法详解与优化

1. 问题背景与核心需求 "单词拆分"是算法领域中一个经典问题,通常出现在字符串处理场景中。给定一个非空字符串s和一个包含非空单词列表的字典wordDict,我们需要判断s是否可以被拆分成一个或多个字典中单词的空格分隔序列。 这个问题在实际开…

📰

Python执行模型解析:从字节码到性能优化

1. Python执行模型深度解析Python作为一门解释型语言,其执行机制与编译型语言有着本质区别。理解Python执行模型是掌握这门语言核心的关键,它直接关系到我们如何编写高效、可靠的代码。在实际开发中,我发现很多初学者甚至有一定经验的开发者&…

📰

从零开始学AI工程:避开误区,掌握实战路线与MLOps闭环

1. 从零到一之前:回答最容易被劝退的三个问题先说个真实场景。我几乎每周都会收到两三条私信,内容大同小异:“博主你好,我是XX专业,现在是XX行业,想转做AI工程,但不知道从哪下手,要不…

📰

深入解析Shenandoah GC在Zero架构下的内存屏障实现

1. 项目概述 今天我们来深入分析一个非常专业的Java虚拟机源码文件——jdk-jdk-27-6/src/hotspot/cpu/zero/gc/shenandoah/shenandoahBarrierSetAssembler_zero.hpp。这个文件是OpenJDK中Shenandoah垃圾收集器在Zero架构下的屏障实现部分,对于理解现代JVM的垃圾回收…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬