Go 基础丨字符串 string

1. 底层

  • runtime/string.go

    type stringStruct struct {str unsafe.Pointer		// 指向底层 Byte 数组len int								// String 所占字节数
    }
    
  • reflect/value.go

    type StringHeader struct {Data uintptrLen  int
    }
    

2. 测试

	s_en := "hedonwang"s_cn := "王小佳"fmt.Println(unsafe.Sizeof(s_en)) //16fmt.Println(unsafe.Sizeof(s_cn)) //16s_en_sh := (*reflect.StringHeader)(unsafe.Pointer(&s_en))		//16s_cn_sh := (*reflect.StringHeader)(unsafe.Pointer(&s_cn))		//16fmt.Println(s_en_sh.Len)	//9fmt.Println(s_cn_sh.Len)	//9

Go 统一使用 UTF-8 编码。

  • Unicode 是一种统一的字符集,囊括了 159 种文字的 144679 个字符,14w 个字符至少需要 3 个字节表示,英文字母均排在前 128 个。
  • Unicode 每个字符都用 3 个字节来表示,如果字符排在前面,就造成了很多的浪费,于是就出现变长编码 UTF-8:
    • 128 个 US-ASCII 字符只需要 1 个字节编码
    • 西方常用字符需要 2 个字节编码
    • 其他字符需要 3 个字节编码,极少数需要 4 个字节编码

3. 访问

  • fori 去访问 str[i] 访问的是 byte[] 字节数组

    str := "王小佳hedonwang"
    for i := 0; i < len(str); i++ {fmt.Printf("%v ", str[i])
    }
    // 231 142 139 229 176 143 228 189 179 104 101 100 111 110 119 97 110 103
    
  • 访问字符需要用 for … range,即访问 rune[] 数组

    str := "王小佳hedonwang"
    for _, char := range str {fmt.Printf("%c ", char)
    }
    // 王 小 佳 h e d o n w a n g
    

4. 切分

  • 先转为 rune[] 切片,再进行切片切分

    s := string([]rune(s)[:3])
    

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

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

相关文章

5G消息 x 融媒 | 媒体融合新入口

5G消息 x 融媒 | 媒体融合新入口 5G 消息是 5G 时代三大运营商联合手机厂商推出的平台型应用&#xff0c;5G 消息以短信为入口&#xff0c;以富媒体消息为媒介&#xff0c;具有权威真实、全面覆盖、精准投放、内容汇聚、开放共享等特点。这些特点符合当下融媒体发展的需求&…

Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

6.1 Python 文件类型及常用内置方法

文章目录 1. 文件读写1.1 文件1.2 open函数1. file参数2. mode参数3. encoding参数 1.3 操作文件注意事项1. 操作文件原理2. 操作文件步骤3. 回收系统资源 1.4 上下文管理 2. 模式测试2.1 只写模式1. 文件不存在2. 文件存在 2.2 读模式1. 路径存在2. 路径不存在 2.3 追加模式2.…

​1:25万基础电子地图(江西版)

我们在《50幅1:25万基础电子地图&#xff08;四川版&#xff09;》和《1&#xff1a;25基础电子地图&#xff08;云南版&#xff09;》等文中&#xff0c;为你分享过四川和云南的基础电子地图。 现在我们再为你分享江西的1&#xff1a;25万基础电子地图&#xff0c;你可以在文…

第9章 类

第9章 类 9.1 创建和使用类9.1.1 创建 Dog 类9.1.2 根据类创建实例 9.2 使用类和实例9.2.1 Car 类9.2.2 给属性指定默认值9.2.3 修改属性的值 9.3 继承9.3.1 子类的方法__init__()9.3.2 给子类定义属性和方法9.3.3 重写父类的方法9.3.4 将实例用作属性9.3.5 模拟实物 9.4 导入类…

【AI绘画】文心一格

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

数据结构-绪论

目录 前言一、从问题到程序二、数据结构的研究内容三、理解数据结构3.1 数据3.2 结构3.2.1 逻辑结构的分类3.2.2 存储结构的分类 3.3 数据结构 总结 前言 本篇文章先介绍数据结构的研究内容&#xff0c;然后再介绍如何去理解数据结构&#xff0c;着重介绍表示数据结构关系的逻…

springboot与flowable(5):任务分配(表达式)

在做流程定义时我们需要给相关的用户节点指派对应的处理人。在flowable中提供了三种分配的方式。 一、固定分配 在分配用户时选择固定值选项确认即可。 二、表达式 1、值表达式 2、方法表达式 三、表达式流程图测试 1、导出并部署 导出流程图&#xff0c;复制到项目中 部署流…

机器学习——集成学习和梯度提升决策树

集成学习 不同的算法都可以对解决同一个问题&#xff0c;但是可能准确率不同&#xff0c;集成学习就是不同算法按照某种组合来解决问题&#xff0c;使得准确率提升。 那怎么组合算法呢&#xff1f; 自举聚合算法**&#xff08;bagging&#xff09;** 顾名思义是 自举聚合 自举…

解决虚拟机中 Ubuntu 网卡丢失连接图标消失

1.停止网络服务 service NetworkManager stop 2.删除网络配置文件 rm /var/lib/NetworkManager/NetworkManager.state 3.重启网络 service NetworkManager start

删除有重复数组的重复项1-2

文章目录 1、描述2、关键字3、思路4、notes5、复杂度6、code 1、描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 num…

怎么做成的文件二维码?扫阅览文件的制作方法

现在用二维码来分享或者查看文件是一种很常用的方式&#xff0c;比如常见的文件内容有简历、资料、作品、压缩包等等。通过将文件生成二维码能够在提升文件传输速度的同时还有利于用户体验的提升&#xff0c;那么如何制作可以长期提供文件预览或者下载的二维码呢&#xff1f; …

国家域名后缀有哪些?

国家域名后缀&#xff0c;也称为国家顶级域名(ccTLDs)&#xff0c;是互联网域名系统(DNS)中代表特定国家或地区的顶级域名。每个国家或地区都有自己的国家域名后缀&#xff0c;如.US代表美国&#xff0c;.CN代表中国&#xff0c;.UK代表英国等。这些域名后缀不仅有助于用户识别…

你好rust

第一次安装rust&#xff0c;记录一下笔记。 几年前就听说过rust&#xff0c;自己一直是个c爱好者&#xff0c;所以比较抵触rust&#xff0c;早年还有什么rust向上突破群。一直比较抵触&#xff0c;直到这几年rust已经渐渐深入到linux内核、云原生可观测以及zend社区当中&#x…

SAR复数图像

本篇文章讲讲SAR图像的一些特征&#xff1a; SAR图像是由行列像素组成的二维矩阵&#xff0c;其中每一个像素代表了地球表面上的一小块区域&#xff0c;其尺寸仅依赖于SAR系统的指标。每个像素点包含一个复数(幅度及相位)&#xff0c;该数值与SAR分辨单元内全部散射提的反射率总…

【Redis实战篇】redis的擅长实现的功能

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;小林同学的专栏&#xff1a;JAVA之基础专栏 【Redis实战篇】Redis有可能出现的问题以及如何解决问题_redis实现用户登录可能造成哪些问题-CSDN博客 本文接上面的文章 目录 2.优惠券秒杀 2.1 全局唯一ID 2.…

Java Streams API:8个高效处理集合的实用技巧

引言 在日常的Java编程中&#xff0c;处理集合数据是一项常见任务。Java Streams API 提供了一系列强大的工具&#xff0c;可以帮助我们以声明式的方式处理集合&#xff0c;提高代码的可读性和效率。以下是8个你应该掌握的实用Java Streams API技巧&#xff0c;让你的代码更加…

C++ 强制类型转换总结

C 强制类型转换总结 简介static_cast介绍场景示例 dynamic_cast介绍场景示例 const_cast介绍示例 reinterpret_cast介绍特点示例 简介 在开发时候&#xff0c;对强制类型转换经常感觉很迷糊&#xff0c;什么场景用哪个没有一个确切的认识&#xff0c;因此借着这个机会好好总结…

新办理北京广播电视节目制作许可证需要什么条件

在北京想要从事广播电视节目制作&#xff0c;那就需要企业拥有广播电视节目制作经营许可证。此许可证不仅是企业合法经营的基础&#xff0c;同时也是保障节目制作质量和内容合规的标志。如何办理&#xff0c;详情致电咨询我或者来公司面谈。 北京广播电视节目制作经营许可证申请…

<tbody>出现滚动条后,同<thead>对不齐的解决方案

需求是需要表格滚动&#xff0c;并且表头不动 <table classtable-style><thead>表头部分</thead><tbody>表体部分</tbody> </table><style>.table-style {width: 100%;border: 1px solid silver; /* 有边框 */border-collapse: col…