Go 字符串 (string)
字符串类型为 string,使用双引号或者反引号包起来
字符串形式
反引号
当使用反引号时不会对字符串进行转义,并可以包含多行文本
示例:
package main
import "fmt"
func main() {
a := `
hello
world
!
`
b := `hello \n world`
fmt.Println(a)
fmt.Println(b)
}
输出结果:
hello
world
!
hello \n world
双引号
当使用双引号时,只能通过 \n 进行换行
示例:
package main
import "fmt"
func main() {
a := "hello \n world"
fmt.Println(a)
}
输出结果:
hello
world
切片
一个字节
如果直接使用索引进行取值,会取到一个字节
示例:
package main
import (
"fmt"
)
func main() {
a := "abc"
for i := 0; i < len(a); i++ {
fmt.Printf("%v, %T\n", a[i], a[i])
}
}
输出结果:
97, uint8
98, uint8
99, uint8
多个字节
如果通过切片取出来的还是字符串,即使只取了一个字节也是一个字节的字符串
示例:
package main
import (
"fmt"
)
func main() {
a := "abc"
for i := 0; i < len(a); i++ {
fmt.Printf("%v, %T\n", a[i: i+1], a[i: i+1])
}
}
输出结果:
a, string
b, string
c, string
不可修改
Go 中字符串类型是不能修改的,多个字符串低层都可以共用一段内存,这使得复制字符串、生成子串的成本都非常低
修改
有两种方式可以改变字符串值:
1. 重新赋值
新开辟一段内存存放新的字符串
func main() {
a := "hello world"
fmt.Println(a)
a := "Hello world"
fmt.Println(a)
}
2. 先转换为切片,修改之后再改回来
注意:如果要修改像中文字符之类超过 3 个字节的字符,需要转换为 rune 而不是 byte
关于 rune 和 byte <- 点击查看
示例:
func main() {
a := "hello world"
b := []rune(a)
b[0] = 'H'
a = string(b)
fmt.Printf("%v", a)
}
遍历
由于 len(string) 获得的是字符串的字节数,所以直接通过长度遍历遍历的是字节数,超过 1 字节的字符无法正常遍历
示例:
func main() {
a := "你好 world"
for i := 0; i < len(a); i ++ {
fmt.Printf("%c - %T\n",a[i], a[i])
}
}
遍历的是每个字节
for range
通过 for range 遍历可以正常地显示每个字符
示例:
func typeString() {
for _, v := range a {
a := "你好 world"
fmt.Printf("%c - %T\n",v, v)
}
}
遍历的是每个字符
Go 字符串 (string)的更多相关文章
- javascript类型系统——字符串String类型
× 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
- Java常量字符串String理解
Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用 "eq ...
- 字符串string类型转换成DateTime或DateTime?类型
常用的Convert.ToDateTime方法 //将含有正确日期格式的string类型转换成DateTime类型 string strDate = "2014-08-01"; D ...
- Javascript基础系列之(三)数据类型 (字符串 String)
javascript一共有9种数据类型 字符串 String 数值型 Number 布尔型 Boolean 未定义 Undefine 空值 Null 对象 Object 引用Refernce 列表型 ...
- Java基础——数组应用之字符串String类
字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...
- java中字符串String 转 int(转)
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
- 字符串String类
1. String类是一个密封类.用关键字sealed修饰: 2. 字符串的两个特性: ·不可变性:string类型变量,一旦声明就表明它是不会被改变的.因此,string中的方法对strin ...
- 字符串string和内存流MemoryStream及比特数组byte[]互转
原文:字符串string和内存流MemoryStream及比特数组byte[]互转 字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str, ...
- 【stanford C++】字符串(String)与流(Stream)
字符串(String)与流(Stream) 一.C++中字符串(String) 字符串(String):就是(可能是空的)字符序列. C++中的字符串在概念上和Java中的字符串类似. C++字符串用 ...
随机推荐
- Centos下使用yum命令报错 except KeyboardInterrupt, e: SyntaxError: invalid syntax
使用yum命令报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid ...
- 遇见手绘花卉小清新简约通用PPT模板推荐
模版来源:http://ppt.dede58.com/jiaoxuekejian/26484.html
- 《精通Python爬虫框架Scrapy》学习资料
<精通Python爬虫框架Scrapy>学习资料 百度网盘:https://pan.baidu.com/s/1ACOYulLLpp9J7Q7src2rVA
- java类成员的默认可访问性是什么?你猜
先看下面TestModel: import org.apache.commons.collections4.BidiMap; import org.apache.commons.collections ...
- 2019/12/16学习内容摘要(Vim)
一,Vim与vi的区别 vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息. vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以 ...
- DNS解析服务结构图
1.DNS(domain name system) 域名 <==> IP地址 DNS解析过程:
- Vue 从入门到进阶之路(十三)
之前的文章我们介绍了一下 vue 中的作用域插槽,本章我们来看一下动态组件与 v-once 指令. <!DOCTYPE html> <html lang="en" ...
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
目录 一. 概述 二. 线程与进程 三. cluster模块源码解析 3.1 起步 3.2 入口 3.3 主进程模块master.js 3.4 子进程模块child.js 四. 小结 示例代码托管在: ...
- C#深入浅出之更多数据类型
类型的划分 一个类型,要么是值类型,要么是引用类型.区别在于拷贝方式:值类型拷贝值,引用类型拷贝引用 值类型 值类型直接包含值.相当于每一个值类型都有自己单独的值: int ...
- 神探Python程序员,带你千里捉小三!(附详情代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王翔 清风Python PS:如有需要Python学习资料的小伙伴 ...