Golang 单引号、双引号和反引号的概念、用法以及区别

在 Golang(Go 语言)中,单引号 (')、双引号 (") 和反引号 (```) 用于不同类型的字符串和字符表示。以下是它们的概念、用法和区别:

1. 单引号 (')

概念
  • 单引号用于表示 字符(rune 类型)。
  • 一个字符表示一个 Unicode 码点,可以是任何合法的 Unicode 字符,包括 ASCII 字符和非 ASCII 字符。
用法
  • 使用单引号包裹一个字符,如 'A''你'
  • 字符常量在 Go 中是 rune 类型,即 32 位整数,表示一个 Unicode 码点。
示例
package main

import "fmt"

func main() {
    var ch rune = 'A' // 'A' 是一个字符常量,类型为 rune
    fmt.Printf("%c\n", ch) // 输出: A
    
    var chineseChar rune = '你' // '你' 是一个字符常量,类型为 rune
    fmt.Printf("%c\n", chineseChar) // 输出: 你
}
特点
  • 只允许一个字符。
  • 可以表示任何 Unicode 字符。
  • 通过 rune 类型访问和操作单个字符的 Unicode 值。

2. 双引号 (")

概念
  • 双引号用于表示 字符串(string 类型)。
  • 字符串是一系列字符的序列,可以包含零个或多个字符。
用法
  • 使用双引号包裹一串字符,如 "Hello, World!""你好,世界!"
  • 字符串可以包含转义字符,例如 "\n" 代表换行。
示例
package main

import "fmt"

func main() {
    var str string = "Hello, World!"
    fmt.Println(str) // 输出: Hello, World!

    var chineseStr string = "你好,世界!"
    fmt.Println(chineseStr) // 输出: 你好,世界!
    
    var escapedStr string = "This is a line\nThis is another line"
    fmt.Println(escapedStr) // 输出:
                            // This is a line
                            // This is another line
}
特点
  • 可以包含多个字符。
  • 支持转义字符。
  • 用于表示动态文本和需要处理的字符串数据。

3. 反引号 (```)

概念
  • 反引号用于表示 原始字符串(raw string literal)。
  • 原始字符串不会处理任何转义字符,内容将按字面值表示。
用法
  • 使用反引号包裹一串字符,如 ``Hello, World!`` 或 ``你好,世界!``。
  • 可以包含多行字符串,并且原样保留换行符和其他格式。
示例
package main

import "fmt"

func main() {
    var rawStr string = `Hello, World!\nNo escape sequences here.`
    fmt.Println(rawStr) // 输出: Hello, World!\nNo escape sequences here.
    
    var multilineStr string = `This is a line
This is another line`
    fmt.Println(multilineStr) // 输出:
                              // This is a line
                              // This is another line
}
特点
  • 不支持转义字符。
  • 保留字符串的原始格式,包括换行符和空格。
  • 常用于表示需要保持原样的多行文本或包含大量特殊字符的字符串。

区别总结

特性单引号 (')双引号 (")反引号 (```)
表示单个字符(rune)普通字符串(string)原始字符串(raw string)
转义字符支持不支持支持不支持
多行支持不支持支持转义的换行符支持
用途表示一个 Unicode 码点普通字符串文本保留原始格式的字符串
示例'A', '你'"Hello, World!"``Hello,\n World!``
数据类型runestringstring

使用场景

  • 单引号:用于处理和表示单个字符的场景,例如需要访问或处理单个 Unicode 码点。
  • 双引号:用于大多数文本处理场景,特别是需要转义字符的地方。
  • 反引号:用于需要保持字符串原始格式的场景,适合多行文本或包含特殊字符的文本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/765470.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OBS 免费的录屏软件

一、下载 obs 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程-CSDN博客 二、使用 obs & 输出无黑屏 【OBS任意指定区域录屏的方法-哔哩哔哩】 https://b23.tv/aM0hj8A OBS任意指定区域录屏的方法_哔哩哔哩_bilibili 步骤: 1)获取区域…

Qt源码分析:窗体绘制与响应

作为一套开源跨平台的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容…

Vue3快速上手--3小时掌握

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n经历了:4800次提交、40个RFC、600次PR、300贡献者官方发版地址:Release v3.0.0 One Piece vuejs/core截止2023年10月,最新的…

阿里Nacos下载、安装(保姆篇)

文章目录 Nacos下载版本选择Nacos安装Windows常见问题解决 更多相关内容可查看 Nacos下载 Nacos官方下载地址:https://github.com/alibaba/nacos/releases 码云拉取(如果国外较慢或者拉取超时可以试一下国内地址) //国外 git clone https:…

数组-长度最小的子数组

M长度最小的子数组(leetcode209) /*** param {number} target* param {number[]} nums* return {number}*/ var minSubArrayLen function(target, nums) {const n nums.length;let ans n 1;let sum 0; // 子数组元素和let left 0; // 子数组…

美团实习—后端开发凉经

面试经历分享 日期: 4月22日时长: 50分钟 意外之喜 没想到在面试过程中,我再次被选中进行下一轮,这确实让我感到有些意外和欣喜。这次面试经历对我而言,不仅是一次技能的检验,更是一次知…

MySQL:设计数据库与操作

设计数据库 1. 数据建模1.1 概念模型1.2 逻辑模型1.3 实体模型主键外键外键约束 2. 标准化2.1 第一范式2.2 链接表2.3 第二范式2.4 第三范式 3. 数据库模型修改3.1 模型的正向工程3.2 同步数据库模型3.3 模型的逆向工程3.4 实际应用建议 4. 数据库实体模型4.1 创建和删除数据库…

10.8K star!史上最强Web应用防火墙雷池WAF

长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall), 一款敢打出口号 “不让黑客越雷池一步” 的 WAF,愿称之为史上最强的一款Web应用防火墙,足够简单、足够好用、足够强的免费且开源的 WAF,基于业…

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…

JAVA连接FastGPT实现流式请求SSE效果

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 一、先看效果 真正实流式请求,SSE效果,SSE解释&am…

一切为了安全丨2024中国应急(消防)品牌巡展武汉站成功召开!

消防品牌巡展武汉站 6月28日,由中国安全产业协会指导,中国安全产业协会应急创新分会、应急救援产业网联合主办,湖北消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-武汉站成功举办。该巡展旨在展示中国应急(消防&am…

Python基础002

Python数据类型 1、字符串&#xff08;str&#xff09; str3 """I miss you so much""" print("str3 ", str3,type(str3)) str3 I miss you so much <class str>2、整数&#xff08;int&#xff09; str1 55 print(&quo…

【面试题】TLS和SSL协议的区别

TLS&#xff08;Transport Layer Security&#xff09;和SSL&#xff08;Secure Sockets Layer&#xff09;协议都是用于在网络上建立安全通信连接的协议&#xff0c;但它们在多个方面存在区别。以下是TLS和SSL协议之间区别的详细分析&#xff1a; 1. 发展历程与标准化 SSL&a…

如何找BMS算法、BMS软件的实习

之前一直忙&#xff0c;好久没有更新了&#xff0c;今天就来写一篇文章来介绍如何找BMS方向的实习&#xff0c;以及需要具备哪些条件&#xff0c;我的实习经历都是在读研阶段找的&#xff0c;读研期间两段的实习经历再加上最高影响因子9.4分的论文&#xff0c;我的秋招可以说是…

分子AI预测赛Task2笔记

下面所述比较官方的内容都来自官方文档 ‍‌⁠‌‍​​​‌​​⁠​​​​​&#xfeff;​​​&#xfeff;‍‬​​‍⁠‍‍​​‬​&#xfeff;‌​​​‌‍‬​​​​​​‍‌Task2&#xff1a;赛题深入解析 - 飞书云文档 (feishu.cn) 赛题背景 强调了人工智能在科研领域&…

探囊取物之多形式注册页面(基于BootStrap4)

基于BootStrap4的注册页面&#xff0c;支持手机验证码注册、账号密码注册 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候&#xff1b;演练页面可点击查看源码 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/ly4gax38ub9j 演练页…

晚上睡觉要不要关路由器?一语中的

前言 前几天小白去了一个朋友家&#xff0c;有朋友说&#xff1a;路由器不关机的话会影响睡眠吗&#xff1f; 这个影响睡眠嘛&#xff0c;确实是会的。毕竟一时冲浪一时爽&#xff0c;一直冲浪一直爽……刷剧刷抖音刷到根本停不下来&#xff0c;肯定影响睡眠。 所以晚上睡觉要…

MQTT协议详述

MQTT 概述 消息队列遥测传输&#xff08;英语&#xff1a;Message Queuing Telemetry Transport&#xff0c;缩写&#xff1a;MQTT&#xff09;&#xff0c;是基于发布&#xff08;Publish&#xff09;/订阅&#xff08;Subscribe&#xff09;范式的消息协议&#xff0c;位于…

BurpSuite抓IOS设备HTTPS流量

一、简述&#xff1a; Burp 这个工具做过 web 安全的人都应该用过&#xff0c;是个非常强大的抓包工具。在 PC 的浏览器上直接配置代理就行了&#xff0c;本篇文章就来介绍一下如何用 Burp 抓 IOS 设备上的流量&#xff0c;很多文章都介绍过怎么抓包&#xff0c;但是很多坑都没…

Linux驱动开发实战宝典:设备模型、模块编程、I2C/SPI/USB外设精讲

摘要: 本文将带你走进 Linux 驱动开发的世界,从设备驱动模型、内核模块开发基础开始,逐步深入 I2C、SPI、USB 等常用外设的驱动编写,结合实际案例,助你掌握 Linux 驱动开发技能。 关键词: Linux 驱动,设备驱动模型,内核模块,I2C,SPI,USB 一、Linux 设备驱动模型 Li…