Go语言中的string知识点
1.Go语言String的本质就是一个[]byte,所以他们之间可以互相转换,byte数组的长度就是字符串的长度。
func StringTest1() {
   str := "Hello,World"
   a := str[0]
   b := str[1]
   fmt.Printf("a=%c\n", a)
   fmt.Printf("b=%c\n", b)
}
结果
a=H
b=e
str=Mello,World
2.字符串的值一旦指定,就不能进行修改。如果想修改,则可以先将字符串装换成slice。
//当试图去修改str时候
str[] = 'M'
会出现如下错误提示

func StringTest1() {
   str := "Hello,World"
   a := str[]
   b := str[]
   fmt.Printf("a=%c\n", a)
   fmt.Printf("b=%c\n", b)
   var byteSlice []byte
   byteSlice = []byte(str)
   byteSlice[] = 'M'
   str = string(byteSlice)
   fmt.Printf("str=%s\n", str)
}
结果
a=H
b=e
str=Mello,World
3.rune表示utf8的字符,一个rune字符由一个或多个byte组成。
rune和字符串长度之间是什么肥四?可以参考下面的例子:
func StringTest2() {
    str2 := "Hello,世界"
    var str2ByteSlice []byte
    str2ByteSlice = []byte(str2)
    var str2RuneSlice []rune
    str2RuneSlice = []rune(str2)
    fmt.Printf("strLen=%v\n",len(str2) )
    fmt.Printf("str2ByteSlice=%v\n",len(str2ByteSlice) )
    fmt.Printf("str2RuneSlice=%v\n",len(str2RuneSlice) )
    for i:=;i<len(str2RuneSlice);i++{
        var b = str2RuneSlice[i]
        fmt.Printf("str2RuneSlice[%d]=%c\n" ,i,b)
    }
结果是什么?
strLen=
str2ByteSlice=
str2RuneSlice=
从结果看到
①字符串的长度和byte切片的长度是一致的
②字符串的长度要比rune切片的长度大,说明一个中文字符需要占用多个byte,这里是就是3个,所以才有后面 str2RuneSlice = 8这个结果
进而我们可以遍历这个rune切片,追加下面代码
    for i:=;i<len(str2RuneSlice);i++{
        var b = str2RuneSlice[i]
        fmt.Printf("str2RuneSlice[%d]=%c\n" ,i,b)
    }
结果
str2RuneSlice[]=H
str2RuneSlice[]=e
str2RuneSlice[]=l
str2RuneSlice[]=l
str2RuneSlice[]=o
str2RuneSlice[]=,
str2RuneSlice[]=世
str2RuneSlice[]=界
Go语言中的string知识点的更多相关文章
- c语言中的string
		1. strlen(char const* s); 函数传入的是c风格字符串(即以‘\0’结尾的字符数组),返回的长度为size_t(即unsigned int),其长度不包括'\0'. 2. str ... 
- C语言中的string.h中的内存字符串处理函数
		转载请注明出处:http://blog.csdn.net/zhubin215130/article/details/8993403 void *memcpy(void *dest, const voi ... 
- C语言中string char int类型转换
		C语言中string -- ::) 转载 ▼ 标签: 操作符 int char c语言 类型转换 分类: C/Cpp ,char型数字转换为int型 "; printf(]-');//输出结 ... 
- c语言中的scanf在java中应该怎么表达,Scanner类。
		1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ... 
- c语言中time相关函数
		工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ... 
- C语言中system()函数的用法总结(转)
		system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include <sys/types.h> #include <sys/wait ... 
- Java 语言中 Enum 类型的使用介绍
		Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ... 
- C语言中static关键字的作用
		static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加sta ... 
- C语言中static作用
		在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ... 
随机推荐
- 免费开源ERP-成功案例分析(2)
			Odoo用户案例 Odoo用户概要 关于Odoo全球的用户,我们来看一些数据: Odoo目前全球有300万使用者 Odoo系统上每天新创建的数据库超过1000个 Odoo和Word.Excel.Pow ... 
- arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
			前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ... 
- windows蓝屏代码
			原始链接 引用自 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/bug-check-code-referenc ... 
- Android连续点击多次事件的实现
			有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作. 首先我们先看一个方法: System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制. publi ... 
- Android 通过反射获取DatePicker 中的控件,并改变其颜色
			到最后也只是成功改变了中间部分的颜色. private void setDatePickerDividerColor(DatePicker datePicker) { // Divider chang ... 
- Android BroadcastReceiver 接收收到短信的广播
			一.知识介绍 1.broadcastReceiver是广播接受者,四大组件之一. 2.Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息. 3.使用场景: ①当手机没有电 ... 
- Android远程桌面助手(Build 0787)
			Android远程桌面助手(Build 0787) 新增: 增加了输入法的快速切换功能,支持通过Google拼音输入法在PC端快速输入中文: 增加了Broadcast的暂停和继续功能: 某些应用截屏失 ... 
- android Q build 变化
			一 概述 android Q build变化整体上越来越严格,语法上之前能够使用的Q上将不能使用. 二 主要变化 2.1 'USER' 弃用 ‘USER’后面的值会被设置成‘nobody',andr ... 
- Python3漏洞扫描工具 ( Python3 插件式框架 )
			目录 Python3 漏洞检测工具 -- lance screenshot requirements 关键代码 usage documents README Guide Change Log TODO ... 
- Linux LVM学习总结——Insufficient Free Extents for a Logical Volume
			如下所示,在创建LV的时候,偶尔会遇到"Volume group "xxxx" has insufficient free space (xxxx extents): x ... 
