当前位置: 首页 > news >正文

Go语言基础--数据类型(整型、字符型)

转义字符

        常用的转义字符有如下:

        1)\t :  表示一个制表符,通常使用它可以排版。

        2)\n:换行符

        3)\\:一个\

        4) \":一个"

        5)\r:一个回车

数据类型概述

        在 Go 编程语言中,数据类型用于声明函数和变量。

        数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

整型

有符号整型

  1. int8:8位整型,表示范围是-128到127。
  2. int16:16位整型,表示范围是-32,768到32,767。
  3. int32:32位整型,表示范围是-2,147,483,648到2,147,483,647。
  4. int64:64位整型,表示范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  5. int:这是一个特殊的整型,其大小在不同的平台(32位或64位)上可能不同。在32位系统上,它的大小与int32相同;在64位系统上,它的大小与int64相同。它是Go的默认整型。

无符号整型

  1. uint8:8位无符号整型,表示范围是0到255。通常用于表示字节(byte)或字符(rune的别名)。
  2. uint16:16位无符号整型,表示范围是0到65,535。
  3. uint32:32位无符号整型,表示范围是0到4,294,967,295。
  4. uint64:64位无符号整型,表示范围是0到18,446,744,073,709,551,615。
  5. 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),但它提供了几种方式来处理字符数据:

  1. rune类型
    • Go语言使用rune类型来表示Unicode码点。rune实际上是int32类型的别名,用于处理Unicode字符。每个Unicode字符都对应一个唯一的码点,而rune类型能够存储这些码点。
    • 使用rune类型可以方便地处理多字节字符(如汉字),因为Unicode字符可能由多个字节组成,而rune类型能够确保每个字符都被正确地表示和处理。
  2. byte类型
    • 在Go语言中,byte类型也是处理字符的一种方式,但它主要用于表示ASCII字符集中的字符。byte实际上是uint8类型的别名,用于存储单个字节的数据。
    • 对于只包含ASCII字符的文本,可以使用byte类型来处理。然而,对于包含Unicode字符(如汉字、特殊符号等)的文本,使用byte类型可能不够方便,因为Unicode字符可能由多个字节组成。
  3. 字符串类型(string)
    • 字符串类型(string)在Go语言中用于表示一串字符的序列。字符串是由字节组成的,但这些字节使用UTF-8编码来表示Unicode文本。
    • 字符串在Go语言中是不可变的,一旦创建就不能直接修改其内容。如果需要修改字符串,通常的做法是将字符串转换为rune切片或byte切片,进行修改后再转换回字符串。

        字符操作

        在Go语言中,可以使用多种方式对字符进行操作,包括:

  • 字符的赋值和读取:可以使用rune类型或byte类型来存储和读取字符。
  • 字符的拼接:可以使用+操作符将字符或字符串进行拼接。
  • 字符的遍历:可以使用for循环和range关键字遍历字符串中的字符,此时遍历的变量类型会根据上下文自动推断为runebyte
  • 字符的格式化输出:可以使用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文件的备份&#xff1…...

支持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攻击后&#xff0c;应立即采取相应措施&#xff0c;包括加强服务器安全、使用CDN和DDoS防御服务来减轻攻击的影响。rak小编为您整理发布ddos造成服务器瘫痪后怎么办。 当DDoS攻击发生时&#xff0c;首先要做的是清理恶意流量。可以通过云服务提供商提供的防护措…...

重磅官宣!追光少年【彭禹锦】荣担任中国美育促进网amp;IPA美育中国行代言人

在美育事业蓬勃发展的今天&#xff0c;一位年仅15岁的少年以其非凡的艺术才华和积极向上的精神风貌&#xff0c;成为了万众瞩目的焦点。中国美育促进网与IPA美育中国行正式宣布&#xff0c;才华横溢、正能量满满的追光少年彭禹锦受邀担任“中国美育促进网&IPA美育中国行”代…...

Python 解析GIS的SHP文件

工作中需要处理一些GIS数据&#xff0c;在 Python 中解析地理信息系统 (GIS) 的 Shapefile (.shp) 文件通常可以通过 geopandas 库来完成。geopandas 是基于 pandas 的一个扩展库&#xff0c;它支持地理空间数据的操作和分析。 下面是一个简单的示例&#xff0c;展示如何使用 …...

大模型微调--文章3

原文地址 链接&#xff1a;https://zhuanlan.zhihu.com/p/635848732 思考题 问题1&#xff1a;p-tuning为了解决什么问题&#xff1f;&#xff08;解决&#xff09; 答案&#xff1a;该方法的提出主要是为了解决这样一个问题&#xff1a;大模型的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零基础入行软件测试全网最全攻略

很多朋友想要入行软件测试&#xff0c;但是都不知道该怎么学。 抽个时间简单的给大家说下&#xff0c;对于0基础的朋友&#xff0c;应该怎么去学习软件测试。 学习软件测试有2条路可以选。 最省事的当然是找个靠谱的培训机构去培训啦&#xff0c;你就什么都不用想了&#xff0c…...

spring-boot-starter-quartz 自动化配置解析

版本 spring-boot:3.3.4 源码解析 依赖包 spring-boot-starter-quartz 的作用为引入相关依赖&#xff1a; spring-boot-starterspring-context-supportspring-txquartz 自动化配置类 依赖&#xff1a;spring-boot-autoconfigure:3.2.4 文件&#xff1a;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】—— 双指针算法

双指针算法 常见的双指针有对撞指针&#xff0c;快慢指针以及前后指针&#xff08;这个前后指针是指两个指针都是从从一个方向出发&#xff0c;去往另一个方法&#xff0c;也可以认为是小学学习过的两车并行&#xff0c;我也会叫做同向指针&#xff09;&#xff0c;在前后指针…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...