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】—— 双指针算法
双指针算法 常见的双指针有对撞指针,快慢指针以及前后指针(这个前后指针是指两个指针都是从从一个方向出发,去往另一个方法,也可以认为是小学学习过的两车并行,我也会叫做同向指针),在前后指针…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...