博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五章-go中的字符串
阅读量:2198 次
发布时间:2019-05-02

本文共 780 字,大约阅读时间需要 2 分钟。

前言

下面将会介绍一个我们日常的开发中最长使用的数据类型——字符串。在go中,字符串类型名字为string,它和Java中的String类似,也是一个值不可变类型,内部是一个 UTF-8 字节数组。下面会通过一些例子展示gostring的特性

特性

go中的string具有以下特性:

  1. 默认值为空字符串 “”
  2. 内部是一个UTF-8 字节数组,可以使用索引访问某字节
  3. 初始化后的值不可变(这里的不可变类似Java中的String,如果需要修改值,就会重新分配一个新的数组)

默认值

验证string默认值为空字符串的例子很简单,这一点和Java中的String(默认值为null)不同。

package mainimport "fmt"func main() {	var str string // 以默认值初始化	fmt.Println("str default:",str) // 输出默认值	fmt.Println("str default length:",len(str)) //输出默认值长度}

使用索引访问

由于string底层是一个UTF-8 字节数组,所以可以使用索引访问string中的元素。

package mainimport "fmt"func main() {	str := "test"	str0 :=str[0] // 底层byte数组第一个元素	fmt.Println("str0:",str0)	fmt.Println("string(str0):",string(str0)) // 将byte转成字符串	for i:=0;i

值不可变

这里的值不可变指的是不能修改底层数组中的元素,只能通过重新分配一个新的数组来修改string的值,例如下面的例子就无法通过编译。

str  := "test"	str[0] = 'a'

转载地址:http://igoub.baihongyu.com/

你可能感兴趣的文章
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>