学习Golang语言(4):类型--字符串

跟着“码术”一起学习Golang语言,偷懒了好多天啦,今天继续讲解Golang中的类型。今天讲解的是字符串。

 

学习Golang语言(1): Hello World

学习Golang语言(2): 变量

学习Golang语言(3):类型--布尔型和数值类型

学习Golang语言(4):类型--字符串

学习Golang语言(5):类型--数组

学习Golang语言(6):类型--切片

 

数值类型

补充上一章节没有指出的地方:

Golang还定义了三种依赖系统的类型:int、unint和uintptr。因为在32位系统和64位系统上用来表示这些类型的位数是不同的。

 

字符串

Golang中另一个重要的内建类型是string。

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。

Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
字符串的表示很简单,用双引号("")或者反引号(``)来创建。例如:"hello world" 或者 `hello world`。

两者的区别:

双引号之间的转义符会被转义,而反引号之间的字符保持不变。例如:

package main

import (
	"fmt"
)

func main() {
	var a = "hello \n world"
	var b = `hello \n world`
	fmt.Println(a)
	fmt.Println("----------")
	fmt.Println(b)
}

输出:

hello 
 world
----------
hello \n world

如果使用单引号(')则表示一个字符(UTF-8编码)----这种在Go语言中不是string。

字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。一些操作在Go是非法的。

    var s = "hello world"
    s[0] = 'c' <-----修改第一个字符为'c',这回报错。

在Go中实现这个需要这么操作:

func main() {
	var s = "hello"
	c := []rune(s)
	c[0] = 'c'
	s2 := string(c)
	fmt.Printf("%s \n", s2)
}

1、将s转换为rune数组;2、修改数组的第一个元数;3、创建新的字符串s2;4、打印输出。

多行字符串

由于Go语言会在每行后自动添加分号,因此使用多行字符串时候,需要注意:

    s := "Starting part"
    + "Ending part"

会被自动转换为:

    s := "Starting part";
    + "Ending part";

这个是错误 的,应当写成:

    s := "Starting part"+
     "Ending part"

这样Go就不会在错误的地方插入分号,另外一种方式就是使用反引号(``)作为原始字符串符号:

    s := `Starting part
     Ending part`

此时s也包含了换行。因为反引号中间的字符会保持不变。

 

字符串转换

可以使用string(char)将一个字符转换成一个包含单个字符的字符串。

 

字符串处理的包

---------------------------------------------

string包

包括字符串的分割,替换,合并等处理;

strconv包

提供许多可以在字符串和其他类型的数据之间的转换函数。

utf-8包

主要用来查询和操作UTF-8编码的字符串或者字符切片。

unicode包

提供一些用来检查Unicode码点是否符合主要标准的函数。

---------------------------------------------

rune

Rune是int32的别名。用UTF-8进行编码。这个类型什么时候使用呢?例如需要遍历字符串的字符时候,可以混换每个字节。为了获得实际的字符,需要使用rune类型。

var s = "你好"
fmt.Println(len(s))
c := []rune(s)
fmt.Println(len(c),c)

输出结果:

6
2 [20320 22909]

---------------------------------------------

欢迎关注码术!一起学习Golang语言。

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值