美文网首页
Go基础-005-05 基础数据类型 字符串型

Go基础-005-05 基础数据类型 字符串型

作者: 如逆水行舟不进则退 | 来源:发表于2020-02-22 21:15 被阅读0次

1. 零值

零值:空字符串 ”“

2. 类型

表示一组组合的集合。属于高级数据类型(复合数据类型)。
在 Go 语言中,一组 utf8编码的 unicode 字符集合。

支持两种定义字符串的方法:

  • 反引号,`` 原生字符串。(多行字符串)
  • 双引号,”” 解析字符串。(单行字符串)

原生和解析的差异在于是否对字符串中定义的特殊转义字符进行解析处理。原生就是不处理,解析就是处理。

示例:

    func main() {
        s1 := `begin\n\n\nend`  
        s2 := "begin\n\n\nend"
        fmt.Println(s1, s2) // 输出 s1 不解析, s2 会解析\n 为换行
    }
   // 注意:s1 中的\n 并没有当做换行符来看待,就当做原生的\n 看待。说明反引号没有去 解析转义字符。

注意:原生字符串中,除了反引号外都是合法字符,不需要处理。

3. 转义字符

1)概述

转义:转换含义。某个字符除了其本身字符含义外,还具备其他含义,当需要其他含
义时,将其转换过来,就是转义字符。
例如:n,同时字符 n 和换行的含义: n 普通字符 , \n 换行符。

2)go 中支持的转义字符有:
- \a  U+0007 alert or bell
- \b  U+0008 backspace
- \f   U+000C form feed
-  \n  换行
- \r   U+000D carriage return
- \t   制表符
- \v  U+000b vertical tab
- \\   反斜线
- \'   U+0027 single quote (valid escape only within rune literals)
- \"  转义双引号

代码示例:

  s3 := "1\t2\n3\"4"
  fmt.Println(s3)

  // 输出 :
  // 1      2
  // 3"4
3)转义字符码值

同样支持转义字符码值:主要是 ascii 码值和 unicode 码值。
存在两种语法:
\OOO 表示 三个八进制数的码值,对应的 ASCII 码中的内容(字母,数字,标点符号)
\xHHHH 表示 4 个十六进制数对应的 unicode 码值。

代码示例:

  s3 := "\141"  // 输出 a
  s4 := "\u533a" // 输出 区

4. 运算

1)+,字符串连接符
  s1 := "hello" + "  " + "golang"
2)len(),长度计算

len() 获取字符串总长度。是字节的数量,而不是字符的数量。
字符一个独立的逻辑单位,无论汉字,英文,标点都是字符。
字节是空间单位。在 utf8 编码下,一个汉字三个字节。
utf8 变长字符集,字符可能占用 1-3 个字节。

注意: len() 属于内置函数,不用导入任何包,直接可以调用。Go 提供的内置函数不多。

代码示例:

  s1 := "hello"  // len 5 
  s2 := "你好hello" // len 11
3)索引访问

支持字节的索引访问。

代码示例:

  s1 := "Golang"
  fmt.Println(s1[0], s1[1]) // 输出为字节型数据 71 111
  fmt.Println(string(s1[0]), string(s1[1])) // 转换为字符串才可 G o

string() 函数 是将某个字节转换为字符串,为内置函数。

注意:索引操作只能访问(读取),不能修改。

3)字符串类型是只读的

一个字符串类型一旦被构建,该数据不能被修改。

4)字符串切片

通过起止索引的方案,来完成子字符串的获取。

s[begin:end]
begin, 开始索引,可以省略,表示从 0 开始
end,结束的索引,结果中不包含 end,可以省略,表示到最后。
冒号不能省略。

代码示例:

  s1 := "HelloGolang" 
  fmt.Println(s1[0:4], s1[4:], s1[0:], s1[:6], s1[:])
 //  分别是  Hell  oGolang   HelloGolang HelloG  HelloGolang
 

注意:字符串切片,得到的还是字符串类型数据。此处的切片,不是 Go 语言中数据类型切片的等 同概念。

5)strings包

概述:
相关文档:https://golang.google.cn/pkg/strings/
内置很多字符串的处理函数,详见上面的文档!

① Split () :使用分隔符将字符串拆分。
② Join () :使用连接符将字符串连接。

示例代码:

func main() {
    s1 := "a-b-c-d"
    s1Arr :=strings.Split(s1, "-")

    fmt.Println(s1Arr) // 切片类型  输出 [a b c d]
    fmt.Printf("%T\n", s1Arr) // 查看变量类型 为 []string
    fmt.Println(strings.Join(s1Arr, "-")) // 字符串 输出 a-b-c-d
}
6)strconv包

将字符串类型的数据,转换为其他数据类型。

数据在传输时,往往都是字符串形式进行传输的,为了得到具体的数据类型,需要将数据从字符串类型,转换到其他类型。

① Atoi() :字符串转换为整型

func main() {
    s1 := "42"
    s1Int, _ := strconv.Atoi(s1)  

    fmt.Printf("%T\n", s1Int) // 输出: int

    fmt.Println(s1Int) // 输出:42
}

4. 内部结构

字符串内部,其实是字节数组(字节集合),字符串类型数据记录了该字节数组的指针(内
存地址)和字符串的长度。
如图所示:


相关文章

  • 4.Golang数据类型

    Go 语言数据类型包含基础类型和复合类型两大类。基础数据类型包括:布尔型、整型、浮点型、复数型、字符型、字符串型、...

  • Go基础-005-05 基础数据类型 字符串型

    1. 零值 零值:空字符串 ”“ 2. 类型 表示一组组合的集合。属于高级数据类型(复合数据类型)。在 Go 语言...

  • Go学习-数据类型

    Go数据类型 Go语言将数据类型分为四类 基础类型 复合类型 引用类型 接口类型 基础类型 数字 字符串 布尔 整...

  • Python学习笔记——Python基础

    Python 基础 数据类型: 整型: 浮点型: 字符串:"abc"或'abc' 布尔型:首字母大写的 True、...

  • python字符串基础操作

    字符串基础操作 Python的数据类型可以分为可变数据类型(列表和字典)和不可变数据类型(整型、浮点型、字符串、布...

  • Go 专栏|基础数据类型:整数、浮点数、复数、布尔值和字符串

    原文链接: Go 专栏|基础数据类型:整数、浮点数、复数、布尔值和字符串[https://mp.weixin.qq...

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • Go基本数据类型_003

    Go基本数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函...

  • 你不知道的 Go 之 string

    简介 字符串(string)是 Go 语言提供的一种基础数据类型。在编程开发中几乎随时都会使用。本文介绍字符串相关...

  • Go语言学习(4) - 基本数据类型

    Go语言中的数据类型包含两种: 基本数据类型(原生数据类型):整型、浮点型、布尔型、字符串、字符(byte、run...

网友评论

      本文标题:Go基础-005-05 基础数据类型 字符串型

      本文链接:https://www.haomeiwen.com/subject/ntglqhtx.html