兰州网站优化seo网站开发 语音输入

web/2025/10/4 18:27:23/文章来源:
兰州网站优化seo,网站开发 语音输入,济南品牌营销型网站建设,微博问答网站开发文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构#xff1f;3 为什么说字符串类型不可修改#xff1f;4 如何实现字符串的修改#xff1f;5 为什么字符串修改的字面量用单引号#xff1f;6 如何判断字符串的修改新建了一个字符串#xff1f;7 字符串的… 文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构3 为什么说字符串类型不可修改4 如何实现字符串的修改5 为什么字符串修改的字面量用单引号6 如何判断字符串的修改新建了一个字符串7 字符串的修改后新建字符串的场景有哪些8 概要总结9 参考链接 前言 本文深入探讨了 Go 语言中字符串的不可变性及其底层实现。 通过学习我们将会理解为什么字符串设计为不可变的原因以及如何判断字符串在修改后的底层数据地址是否发生变化以确定是否创建了新的字符串。 1 字符串类型的数据结构组成 Go 字符串类型的数据结构包括一个指向底层字节数组的指针和一个字符串长度的整数值。 这个字节数组是不可变的一旦字符串被创建字符串的内容将无法被修改。 type stringStruct struct {str unsafe.Pointer // 指向底层字节数组的指针len int // 字符串长度 }2 为什么要这么设计数据结构 保证线程安全不可变字符串是线程安全的只允许读操作在并发场景下无需担心数据竞争问题。实现内存共享相同的字符串只需存储一次实现多次重复使用节省内存。优化性能作为哈希表的键时不需要每次重新计算哈希值提高性能。 3 为什么说字符串类型不可修改 字符串底层是只读的字节序列任何对字符串的修改实际上都会创建一个新的字符串而不会改变原始字符串 # 错误示范导致编译报错 str : hello str Hello//字符串是不可修改的是不允许直接在原字符串上操作的 fmt.Prtintln(str) 4 如何实现字符串的修改 由于字符串是不可修改的实际的字符串修改操作是创建了一个新的字符串。 常见的做法先将字符串转换为 []byte 或者 []rune进行修改操作后再转换为字符串。 // 初始字符串使用双引号表示字符串 str : hello fmt.Println(旧字符串%v,str)// 将字符串转换为[]byte切片 strBytes : []byte(str) // 修改 []byte 中的一个字符使用单引号表示字符 strBytes[0] H str string(strBytes) // 创建了一个新的字符串 fmt.Println(新字符串%v,str)5 为什么字符串修改的字面量用单引号 [!question] strBytes[0] H 使用了单引号为什么需要使用单引号 单引号字面量代表单个字符常用于[]byte和[]rune中的字符元素修改。双引号和反引号的字面量代表字符串 6 如何判断字符串的修改新建了一个字符串 [!warning] 判断依据 字符串修改操作会创建一个新的字符串并将底层的指针地址指向新字符串。如果要判断 Go 字符串修改是否创建了新字符串需要判断字符串内容的地址前后是否一致。 我们知道获取一个变量的地址有两种方式①使用 unsafe 包 ②使用 fmt.Printf(%p, s)。这两种方式对于获取字符串变量地址有所差异第一种方式获取的是底层字节数组的地址第二种方式获取的是字符串变量本身的地址。以下是代码示例 // 获取字符串的指针地址 func getStringPointer(s string) uintptr { return uintptr(unsafe.Pointer(s)) } func main() { // 初始字符串 s : hello // 获取初始字符串的指针地址 initialPointer : getStringPointer(s) // 打印指针地址 fmt.Printf(Initial pointer: %x\n, initialPointer) // 将字符串转换为 []byte b : []byte(s) // 修改 []byte b[0] H // 将 []byte 转回字符串,并给修改字符串s s string(b) // 获取新字符串的指针地址 newPointer : getStringPointer(s) fmt.Printf(New pointer: %x\n, newPointer) // 判断是否创建了新字符串 if initialPointer ! newPointer { fmt.Println(新字符串已创建) } else { fmt.Println(没有创建新字符串) } }7 字符串的修改后新建字符串的场景有哪些 每次对字符串的修改操作(字符串拼接、字符串替换、切片操作)都会创建一个新的字符串。 8 概要总结 [!example] 概要总结 我们从GO字符串的底层数据结构了解到字符串是不可修改的原因是字符串底层是只读的字节序列若直接在原字符串修改则编译器将引发错误。想要修改字符串就必须转换为[]byte或者[]rune修改之后转换为原有字符串类型。[]byte或者[]rune的修改的字面量必须使用单引号双引号是代表的字符串。通过代码分析可知字符串修改操作会创建一个新的字符串并将底层的指针地址指向新字符串。 9 参考链接 图片引用1Go 数据结构图片引用2为什么说Go的字符串类型不能修改

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

织梦手机网站模板每天做任务得钱的网站

2019独角兽企业重金招聘Python工程师标准>>> 续前文装好chrome后,yum居然用不了,提示错误“Basic XLib functionality test failed!” 呵呵。。。呵呵了.... 【题外话~个人真心觉得pythonseleniumchrome在linux环境下开发和使用 简直蛋疼无比…

免费建站源码无极网

2019独角兽企业重金招聘Python工程师标准>>> 这个异常有下面几种情况 1、你写的 EL 表达式有语法错误。 2、再者就是你取得变量是多级的话比如 student.address.prevince 属性model 关联有问题。 3、还有就是你取得值为空(null) 比如 Thymel…

泰州网站设计公司国外做美食视频网站

以前出差时在机场用过无线网络,小区内是否也有无线网络呢?随便一搜,果然有几个无线网络信号,于是打起了免费蹭网的主意,但信号最好的几个网络的WEP或WPA密码成为了一个门坎,于是在公司上网查到相关资料&…

会员网站模板wordpress手机app主题

https://leetcode.cn/problems/binary-tree-preorder-traversal/ 这道题目需要我们自行进行创建一个数组,题目也给出我们需要自己malloc一个数组来存放,这样能达到我们遍历的效果,我们来看看他的接口函数给的是什么。 可以看到的是这个接口函…

国内外高校门户网站建设的成功经验与特色分析wordpress 极简博客

目录 1.初识MQ1.1.同步调用1.2.异步调用1.3.技术选型 2.RabbitMQ2.1.安装2.2.收发消息2.2.1.交换机2.2.2.队列2.2.3.绑定关系2.2.4.发送消息 2.3.数据隔离2.3.1.用户管理2.3.2.virtual host 1.初识MQ 1.1.同步调用 之前说过,我们现在基于OpenFeign的调用都属于是同…

网站开发与应用 大作业作业如何评价小米的网站建设

数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。轻则程序逻辑出现BUG,重则程序崩溃,数据丢失。造成数据丢失的原因,主要有程序错误、人为错误、计算机失败、磁盘失败、灾难(如起火、地震)和偷窃。数据库日常备份工…

高网站建设网站开发环境分析

目录 🌷1、JVM是什么? 🌷2、JVM的执行流程(能够描述数据区5部分) 🌷3、JVM类加载过程 🌷4、双亲委派机制:描述类加载的过程 问题1:类加载器 问题2:什么…

长沙一键建站系统北京SEO网站优化公司

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 1 示例 2: 输入: 16 输出: true 解释: 24 16 示例 3: 输入: 218 输出: false 解法一: class Solution { public:bool isPowerOfTwo(int n) {return(n >…

建设银行网站进不去电子商务网站建设的试卷

1、初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(month), _…

美橙互联 网站备案家居网站建设的背景及意义

Leetcode刷题之删除链表中等于给定值 val 的所有结点 一、题目描述二、题目解析 一、题目描述 Leetcode刷题之删除链表中等于给定值 val 的所有结点 二、题目解析 本题中我们需要将链表中等于val的值的节点删除,首先我想到的方法是通过暴力求解解决,…

南通seo公司网站广东深圳网站建设微信商城运营

1.回撤流定义(RetractStream) Flink 的回撤流是指在 Flink 的流处理算法中,撤回已经发送到下游节点的数据。这是因为在实际应用场景中,有些错误数据可能会发送到下游节点,因此需要回撤流以保证数据的准确性。 回撤流…

饮料公司网站模板环保局网站建设

目录 一、j2mod 二、Modbus4J 三、Jamod 在Java中,有几个流行的库可以用于实现Modbus协议以读取设备数据。以下是一些常用的库: 一、j2mod 这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包…

建立企业网站 优帮云外包加工官网

考勤机数据无法同步最后更新于:2020-06-29 15:27:45请先参考以下操作指南确保考勤机正确安装:http://help.ihr360.com/time_machine.html如果安装后仍出现数据无法同步的问题,则建议按下面步骤排查:首先在时间管理-时间设置-考勤机…

贵州省建设厅二建报名网站平面设计主要内容

目录 一、web发展历程 二、vue是什么 三、Vue核心特性 组件化 数据驱动 指令 四、Vue与Angular以及React的区别 一、web发展历程 Web是World Wide Web的简称,中文译为万维网 我们可以将它规划成如下的几个时代来进行理解 静态网页:最早的网页是没…

类似wordpress的建站章丘网站开发

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 5.9 含并行连结的网络(GoogLeNet) 在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet的网络结…

汕头网站建设推广价格南通企业网页制作

题目 这里写链接内容 题意 给出一个最长为200000200000数列 给出一堆最多为200000200000个询问区间,问从这些区间中取出一些数使得数字之和是m的倍数,有多少种方案。其中保证1≤m≤201≤m≤20。 题解 最容易想到的方法就是倍增dp来做。 定义f[i][…

网站首页site不到 a5wordpress头部图片

【K3s】在 AWS EC2 上运行生产 K3s 集群 本文将介绍如何在 AWS EC2 上运行 K3s。您将创建一个 EC2 实例并在 AWS 上运行单节点 K3s 集群。 自托管的 K3s 允许您在裸金属上运行 Kubernetes,并应用较小、低资源工作负载的原则。哦,你还可以控制你的控制平面。这有点像逃离托管…

档案信息网站建设什么网站后台程序好用

什么是openstack今年,我第一次参加了4月25日至29日在德克萨斯州奥斯汀举行的OpenStack峰会。 今天结束了,我要回家了,我想回顾一下,从我的角度分享你错过的事情。 作为以应用程序开发人员为重点的技术传播者,转移到包…

哪里有网站建设流程无锡机关单位建设网站

今天要处理的问题是:监听一个变量,当该变量的值出现变化时能够获知,并进行相应处理。使用java.bean.PropertyChangeSupport类。看如下的构造方法,其实就是将你要控制的对象绑定到该工具中。PropertyChangeSupport changes new Pr…

婚恋网站制作要多少钱桂林市网站建设

​制作可视化报告时,为了展示效果,有时候需要用图片来展示,在 Power BI 中,关于图片的自定义视觉对象主要有下面三个,利用他们可以很轻松的进行图片可视化。下面来看看这些视觉对象的效果。样本数据如下:为…