查漏补缺之Go的Strings, bytes, runes和字符
字节遍历,字符遍历
https://play.golang.org/p/DeZcCN9aHXo
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
s := "充气nb1"
// 字节遍历
for i := 0; i < len(s); i++ {
fmt.Println(s[i])
}
// 字符遍历
fmt.Println("len:", len(s))
for i, k := range s {
fmt.Println(i, k)
}
// 字节遍历2
for i, w := 0, 0; i < len(s); i += w {
runeValue, width := utf8.DecodeRuneInString(s[i:])
fmt.Printf("%#U starts at byte position %d\n", runeValue, i)
w = width
}
}
总结
golang的string是以UTF-8编码的,而UTF-8是一种1-4字节的可变长字符集,每个字符可用1-4字节 来表示
使用下标方式s[i]访问字符串s,s[i]是UTF-8编码后的一个字节(uint8),即按字节遍历
使用for i,v := range s 方式访问s,i是字符串下标编号,v是对应的字符值(int32=rune),即按字符遍历
使用fmt.Printf打印时,%c占位符打印的是字符,%+v占位符打印的是这个类型自身,如fmt.Printf("%+v",s[i])打印的就是字节一个十进制的无符号整数s[i]
如果希望以随机方式访问字符串s的每个字符,可以先转为[]rune数组,再以下标访问
参考资料
其他
package main
import (
"fmt"
)
func main() {
s := "测试"
fmt.Println(s)
fmt.Println(len(s))
fmt.Println(s[0])
for _, v := range s {
fmt.Println(v)
}
}
查漏补缺之Go的Strings, bytes, runes和字符的更多相关文章
- Java基础查漏补缺(2)
Java基础查漏补缺(2) apache和spring都提供了BeanUtils的深度拷贝工具包 +=具有隐形的强制转换 object类的equals()方法容易抛出空指针异常 String a=nu ...
- Go语言知识查漏补缺|基本数据类型
前言 学习Go半年之后,我决定重新开始阅读<The Go Programing Language>,对书中涉及重点进行全面讲解,这是Go语言知识查漏补缺系列的文章第二篇,前一篇文章则对应书 ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- js基础查漏补缺(更新)
js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ...
- Entity Framework 查漏补缺 (一)
明确EF建立的数据库和对象之间的关系 EF也是一种ORM技术框架, 将对象模型和关系型数据库的数据结构对应起来,开发人员不在利用sql去操作数据相关结构和数据.以下是EF建立的数据库和对象之间关系 关 ...
- 2019Java查漏补缺(一)
看到一个总结的知识: 感觉很全面的知识梳理,自己在github上总结了计算机网络笔记就很累了,猜想思维导图的方式一定花费了作者很大的精力,特共享出来.原文:java基础思维导图 自己学习的查漏补缺如下 ...
- 20165223 week1测试查漏补缺
week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ...
- 今天開始慢下脚步,開始ios技术知识的查漏补缺。
从2014.6.30 開始工作算起. 如今已经是第416天了.不止不觉.时间过的真快. 通过对之前工作的总结.发现,你的知识面.会决定你面对问题时的态度.过程和结果. 简单来讲.知识面拓展了,你才干有 ...
- Mysql查漏补缺笔记
目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) ...
随机推荐
- leetcode 387
Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...
- Django ORM中的模糊查询
ORM映射 什么是ORM映射?在笔者认为就是对SQL语句的封装,所写语句与SQL对应语句含义相同,使开发更加简单方便,不过也是存在弊端的,使程序运行效率下降.例如: UserInfo.objects. ...
- 【译】高级T-SQL进阶系列 (三)【上篇】:理解公共表表达式(CTEs)
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 伴随着SQL SERVER 2005的首次展示,微软介绍了一种新的被称为“公共表 表达式”(CTE)的查询结构. ...
- mysql学习笔记(三):unsigned理解以及特殊情况
UNSIGNED UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含义相同.例如,INT的类型范围是-2 147 483 648 - 2 147 483 647 ...
- Spring 事务管理的使用
Spring提供了2种事务管理 编程式的 声明式的(重点):包括xml方式.注解方式(推荐) 基于转账的demo dao层 新建包com.chy.dao,包下新建接口AccountDao.实现类Acc ...
- Vue.js开发去哪儿网WebApp
一.项目介绍 这个项目主要参考了去哪儿网的布局,完成了首页.城市选择页面.详情页面的开发. 首页:实现了多区域轮播的功能,以及多区域列表的展示: 城市选择页面:在这个页面实现了城市展示.城市搜索.城市 ...
- python 中的 int() 与 round
int(x):向下取整 round(x):超过 .5 则向上取整,否则向下取整
- Spring Boot 学习方法论-如何正确的入门 Spring Boot
想要入门 Spring Boot,那么什么样的教程是符合初学者学习的(没有太多的Java基础但有一些程序基础或者软件编程知识). 这恰好能够勾出很多问题,比如是文章图文教程适合还是视频教程适合零基础初 ...
- JQuery DOM操作:设置内容&属性&添加元素&插入元素&包裹&克隆&移除&替换
JQuery text().html().val() $(elem).text(str):添加文本内容str到elem类型元素,返回jQuery对象 $(elem).text():返回第一个elem标 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy Ndarray 对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放同类型元素的多维数组. ndarr ...