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】—— 双指针算法
双指针算法 常见的双指针有对撞指针,快慢指针以及前后指针(这个前后指针是指两个指针都是从从一个方向出发,去往另一个方法,也可以认为是小学学习过的两车并行,我也会叫做同向指针),在前后指针…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑 在电子商务领域,转化率与网站性能是决定商业成败的核心指标。今天,我们将深入解析不同类型电商平台的转化率基准,探讨页面加载速度对用户行为的…...
