Go语言基础--数据类型(整型、字符型)
转义字符
常用的转义字符有如下:
1)\t : 表示一个制表符,通常使用它可以排版。
2)\n:换行符
3)\\:一个\
4) \":一个"
5)\r:一个回车
数据类型概述
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
整型
有符号整型
int8:8位整型,表示范围是-128到127。int16:16位整型,表示范围是-32,768到32,767。int32:32位整型,表示范围是-2,147,483,648到2,147,483,647。int64:64位整型,表示范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。int:这是一个特殊的整型,其大小在不同的平台(32位或64位)上可能不同。在32位系统上,它的大小与int32相同;在64位系统上,它的大小与int64相同。它是Go的默认整型。
无符号整型
uint8:8位无符号整型,表示范围是0到255。通常用于表示字节(byte)或字符(rune的别名)。uint16:16位无符号整型,表示范围是0到65,535。uint32:32位无符号整型,表示范围是0到4,294,967,295。uint64:64位无符号整型,表示范围是0到18,446,744,073,709,551,615。uintptr:一个无符号整型,其大小足以存储指针。在32位系统上,它的大小与uint32相同;在64位系统上,它的大小与uint64相同。uintptr通常用于低级编程,如系统调用或与C语言库交互。
//fmt.Printf() 可以用于做格式化输出。
fmt.Printf("a 的 类型 %T \n", a)
//如何在程序查看某个变量的占用字节大小和数据类型
var b int64 = 101
//unsafe.Sizeof(n2) 是unsafe包的一个函数,可以返回n1变量占用的字节数
fmt.Printf("b 的 类型 %T b占用的字节数是 %d ", b, unsafe.Sizeof(b))
字符型
字符概念
在Go语言中,字符类型具有独特的特点和表示方式。字符是构建字符串的基本单位,用于表示文本和字符数据。Go语言中的字符类型使用Unicode编码,这意味着它可以表示世界上各种语言的字符,包括英文字母、数字、标点符号以及各种特殊字符和符号。
字符种类
虽然Go语言在类型系统中没有直接称为“字符”的基本类型(如C语言中的char),但它提供了几种方式来处理字符数据:
- rune类型:
- Go语言使用
rune类型来表示Unicode码点。rune实际上是int32类型的别名,用于处理Unicode字符。每个Unicode字符都对应一个唯一的码点,而rune类型能够存储这些码点。 - 使用
rune类型可以方便地处理多字节字符(如汉字),因为Unicode字符可能由多个字节组成,而rune类型能够确保每个字符都被正确地表示和处理。
- Go语言使用
- byte类型:
- 在Go语言中,
byte类型也是处理字符的一种方式,但它主要用于表示ASCII字符集中的字符。byte实际上是uint8类型的别名,用于存储单个字节的数据。 - 对于只包含ASCII字符的文本,可以使用
byte类型来处理。然而,对于包含Unicode字符(如汉字、特殊符号等)的文本,使用byte类型可能不够方便,因为Unicode字符可能由多个字节组成。
- 在Go语言中,
- 字符串类型(string):
- 字符串类型(
string)在Go语言中用于表示一串字符的序列。字符串是由字节组成的,但这些字节使用UTF-8编码来表示Unicode文本。 - 字符串在Go语言中是不可变的,一旦创建就不能直接修改其内容。如果需要修改字符串,通常的做法是将字符串转换为
rune切片或byte切片,进行修改后再转换回字符串。
- 字符串类型(
字符操作
在Go语言中,可以使用多种方式对字符进行操作,包括:
- 字符的赋值和读取:可以使用
rune类型或byte类型来存储和读取字符。 - 字符的拼接:可以使用
+操作符将字符或字符串进行拼接。 - 字符的遍历:可以使用
for循环和range关键字遍历字符串中的字符,此时遍历的变量类型会根据上下文自动推断为rune或byte。 - 字符的格式化输出:可以使用
fmt.Printf等函数和格式化占位符(如%c)来输出字符。
Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。
package main
import "fmt"
func main() {
// 示例1:字符与码值的直接输出与格式化输出
var c1 byte = 'a'
var c2 byte = '0' // 字符的'0'
// 直接输出byte值,显示的是字符的UTF-8编码的码值(对于ASCII字符,UTF-8编码与ASCII码相同)
fmt.Println(c1, c2) // 输出:97 48
// 使用格式化输出%c显示字符
fmt.Printf("c1=%c, c2=%c\n", c1, c2) // 输出:c1=a, c2=0
// 示例2:Unicode字符与码值的处理
var c3 int = '王' // 注意:这里虽然可以编译,但最好使用rune来存储Unicode字符
fmt.Printf("c3=%c, c3对应的码值%d\n", rune(c3), c3) // 显式转换为rune以正确显示字符
// 示例3:数字与字符的转换
var c4 int64 = 19996 // '王'的Unicode码值
fmt.Printf("c4=%c\n", rune(c4)) // 显式转换为rune以显示字符
// 示例4:字符的运算
// 字符运算实际上是码值之间的运算
var n1 = 10 + 'a' // 'a'的ASCII码是97,所以结果是107,对应ASCII码表中的字符'k'
fmt.Println("n1=", n1, "对应的字符是", string(n1)) // 使用string()将整数转换为字符串表示,但注意这里实际上显示的是'k'
// 备注:
// 1. 字符在计算机中是以其对应的码值(整数)形式存储的。
// 2. 字符和码值的对应关系由字符编码表决定,Go语言使用UTF-8编码。
// 3. Go中没有专门的char类型,通常使用byte(针对ASCII字符)或rune(针对Unicode字符)来表示字符。
// 4. 字符常量用单引号括起来,如'a'、'中'等。
// 5. Go支持转义字符,如'\n'表示换行符。
// 6. 字符类型在Go中可以进行运算,因为它们在内部是以整数(码值)形式存在的。
}
相关文章:
Go语言基础--数据类型(整型、字符型)
转义字符 常用的转义字符有如下: 1)\t : 表示一个制表符,通常使用它可以排版。 2)\n:换行符 3)\\:一个\ 4) \":一个" 5)\r:一个回车 数据类型概述 在 Go 编程语言中,数据类型用于声明函数和变量…...
SpringBoot配置--Profile
目录 使用profile 的原因? proflie 的配置方式 多profile文件方式 profile 激活方式 1 配置文件 2 命令行参数 小结 使用profile 的原因? 用来完成不同环境下,配置动态切换功能的(具体什么意思呢?假设你在A电脑…...
在Go中理解栈和先进先出原则
Go是一种功能强大的编程语言,提供了丰富的数据结构和算法。堆栈是计算机科学中的基本数据结构之一。在本博文中,我们将探讨如何在 Go 中实现和使用堆栈,以及堆栈如何遵循先进先出 (FIFO) 原则。 首先,让我们来看看堆栈是什么以及它…...
Ted靶机渗透测试
一、靶机下载地址 Ted: 1 ~ VulnHub 二、信息收集 1、主机发现 # 使用命令 nmap 192.168.145.0/24 -sn | grep -B 2 "00:0C:29:E2:36:FA" 2、端口扫描 # 使用命令 nmap 192.168.145.214 -p- -sV 3、指纹识别 # 使用命令 whatweb "http://192.168.145.214&…...
【chart.js】折线图给点添加点击事件
var mychart new Chart( ctx,{ type:line", … options:{ hover:{ // 此处最重要,决定是否能选中绑定的点 mode:“nearest” } , onClick:function(event,elements){ // 此为 被点击 的点 firstelement elements[0] // 这个点 属于第几个数据集合…...
旧手机NAS方案
这里写目录标题 1、参考2、alpine-term-v16.0-release.apk下载安装3、电脑端ssh连接3、安装docker3.1 网络配置3.2 配置APK源 1、参考 【Docker与Termux】闲置旧安卓手机上的NAS无缝部署方案 https://blog.csdn.net/AnRanGeSi/article/details/138717589 【Alpine Term】Andr…...
Secure CRT 9.x版本高亮着色配置文件
Secure CRT的网络配置文件高亮显示,还在完善,逐渐适配不同厂商 设备名字自动蓝色高亮显示设备接口名高亮显示IPv4地址、IPv6地址、MAC地址高亮显示掩码、反掩码高亮显示设备SN号高亮显示接口状态、设备状态等高亮显示各路由协议高亮显示 【下载地址】效果…...
kafka无法启动,提示连接zookeeper超时
想必不少人都遇到过这种场景,明明昨天环境还好好的,今天怎么就不行了呢?关键是这种情况,有时候连重启大法都不管用了,顿时陷入了毫无头绪的茫然中。。。 好了,聊回话题本身,因为升级程序&#x…...
mysql5.7.20升级5.7.44
近期安全测试mysql5.7.20有很多的漏洞,考虑升级到5.7.44 问题1:下载5.7.44的版本: 选择安装版本,或者zip解压版本,看上一篇文章 我选择了安装版本; 问题2:做好现场data文件的备份࿱…...
支持S/MIME证书的邮件客户端有哪些?
S/MIME证书,也叫做邮件安全证书,支持安全/多用途互联网邮件扩展协议(S/MIME协议),是通过加密和数字签名来确保电子邮件的安全性、保密性和完整性的数字证书。GDPR、HIPAA、FDA等多个行业都要求邮件发送方在发送邮件时对…...
uniapp本地打包app安装说明
uniapp本地打包app安装说明 目录 uniapp本地打包app安装说明一、打包说明1.HBuilder X 生成本地打包资源2.Android Studio和App离线SDK环境准备2.1 下载Android Studio和 App离线SDK2.2 资源替换2.3 id属性值修改。2.4 添加provider信息到AndroidManifest.xml中的<applicati…...
ddos造成服务器瘫痪后怎么办
在服务器遭受DDoS攻击后,应立即采取相应措施,包括加强服务器安全、使用CDN和DDoS防御服务来减轻攻击的影响。rak小编为您整理发布ddos造成服务器瘫痪后怎么办。 当DDoS攻击发生时,首先要做的是清理恶意流量。可以通过云服务提供商提供的防护措…...
重磅官宣!追光少年【彭禹锦】荣担任中国美育促进网amp;IPA美育中国行代言人
在美育事业蓬勃发展的今天,一位年仅15岁的少年以其非凡的艺术才华和积极向上的精神风貌,成为了万众瞩目的焦点。中国美育促进网与IPA美育中国行正式宣布,才华横溢、正能量满满的追光少年彭禹锦受邀担任“中国美育促进网&IPA美育中国行”代…...
Python 解析GIS的SHP文件
工作中需要处理一些GIS数据,在 Python 中解析地理信息系统 (GIS) 的 Shapefile (.shp) 文件通常可以通过 geopandas 库来完成。geopandas 是基于 pandas 的一个扩展库,它支持地理空间数据的操作和分析。 下面是一个简单的示例,展示如何使用 …...
大模型微调--文章3
原文地址 链接:https://zhuanlan.zhihu.com/p/635848732 思考题 问题1:p-tuning为了解决什么问题?(解决) 答案:该方法的提出主要是为了解决这样一个问题:大模型的Prompt构造方式严重影响下游任…...
游戏测试中需求分析的本质
游戏测试大不同 1.游戏功能模块介绍1.1. 登录模块1.2. 注册模块1.3. 故事情节模块1.4. 动画模块1.5. 音频模块1.6. 结束界面模块1.7. 网络模块1.8. 数据库模块 2.需求文档编写2.1需求的定义2.2需求分类2.3需求分析目标 3.测试用例编写3.1测试用例的定义3.2测试用例拆解包含测试…...
2024零基础入行软件测试全网最全攻略
很多朋友想要入行软件测试,但是都不知道该怎么学。 抽个时间简单的给大家说下,对于0基础的朋友,应该怎么去学习软件测试。 学习软件测试有2条路可以选。 最省事的当然是找个靠谱的培训机构去培训啦,你就什么都不用想了,…...
spring-boot-starter-quartz 自动化配置解析
版本 spring-boot:3.3.4 源码解析 依赖包 spring-boot-starter-quartz 的作用为引入相关依赖: spring-boot-starterspring-context-supportspring-txquartz 自动化配置类 依赖:spring-boot-autoconfigure:3.2.4 文件:org.springframewo…...
DM8 数据库查询版本号以及授权到期时间SQL
1.查看操作系统信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04:…...
算法【Java】—— 双指针算法
双指针算法 常见的双指针有对撞指针,快慢指针以及前后指针(这个前后指针是指两个指针都是从从一个方向出发,去往另一个方法,也可以认为是小学学习过的两车并行,我也会叫做同向指针),在前后指针…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
