脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - GO语言入门学习之基本数据类型字符串

GO语言入门学习之基本数据类型字符串

2022-09-23 10:41PENGJUNQIAO Golang

字符串在Go语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样,下面这篇文章主要给大家介绍了关于GO语言入门学习之基本数据类型字符串的相关资料,需要的朋友可以参考下

字符串

Go语言中的字符串以原生数据类型出现。 Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符

GO语言中字符串是用双引号包裹的

GO语言中单引号包裹的是字符

?
1
2
3
4
5
6
7
8
9
// 字符串
s := "Hello 中国"
// 单独的字母、汉字、符合表示一个字符
c1 := 'h'
c2 := '1'
c3 := '中'
// 字节:1字节=8Bit(8个二进制位)
// 1个字符'A'=1个字节
// 1个utf8编码的汉字'中'= 一般占3个字节

字符串转义符

转义符 含义
\r 回车符(返回行首)
\n 换行符(直接跳到下一行的同列位置)
\t 制表符
' 单引号
" 双引号
\ 反斜杠

字符串的常用操作

              方法                       介绍   
           len(str)                    求长度  
         +或fmt.Sprintf                拼接字符串 
         strings.Split                 分割   
       strings.contains              判断是否包含 

  • strings.HasPrefix,strings.HasSuffix 前缀/后缀判断
  • strings.Index(),strings.LastIndex() 子串出现的位置
  • strings.Join(a[]string, sep string) join操作
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package main
 
import (
    "fmt"
    "strings"
)
 
// 字符串
func main(){
    // \ 本来是具有特殊含义的,告诉程序\就是一个单纯的\
    path := "\"E:\\36期Python全栈开发资料\\Administrator(8E5370323193)\\预习(2)\""
    path1 := "'E:\\36期Python全栈开发资料\\Administrator(8E5370323193)\\预习(2)'"
    fmt.Println(path)
    fmt.Println(path1)
 
    s := "I'm ok"
    fmt.Println(s)
 
    // 多行的字符串
    s2 := `
    世情薄
    人情恶
    雨送黄昏花易落
    `
    fmt.Println(s2)
    s3 := `E:\36期Python全栈开发资料\Administrator(8E5370323193)\预习(2)`
    fmt.Println(s3)
 
    // 字符串相关操作
    fmt.Println(len(s3))
 
    // 字符串拼接
    name := "理想"
    world := "远大"
    ss := name + world
    fmt.Println(ss)
    ss1 := fmt.Sprintf("%s%s", name, world)
    // fmt.Printf("%s%s", name, world)
    fmt.Println(ss1)
    // 分割
    ret := strings.Split(s3, "\\")
    fmt.Println(ret)
 
    // 包含
    fmt.Println(strings.Contains(ss, "理想"))
    // 前缀
    fmt.Println(strings.HasPrefix(ss, "理想"))
    // 后缀
    fmt.Println(strings.HasSuffix(ss, "理想"))
 
    s4 := "abcded"
    fmt.Println(strings.Index(s4, "c"))
    fmt.Println(strings.LastIndex(s4, "c"))
    fmt.Println(strings.Index(s4, "d"))
    fmt.Println(strings.LastIndex(s4, "d"))
    // 拼接
    fmt.Println(strings.Join(ret, "+"))
}

byte和rune类型

字符用单引号(’)包裹起来

Go 语言的字符有以下两种:

  • uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
  • rune类型,代表一个 UTF-8字符。rune类型实际是一个int32

字符串底层是一个byte数组,可以和[]byte类型相互转换。字符串是不能修改的 字符串是由byte字节组成,所以字符串的长度是byte字节的长度。 rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成。

修改字符串

要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。无论哪种转换,都会重新分配内存,并复制字节数组。

类型转换

强制类型转换的基本语法如下:

T(表达式)

其中,T表示要转换的类型。表达式包括变量、复杂算子和函数返回值等.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main
 
import (
    "fmt"
)
 
func main() {
    s := "Hello 中国"
    // len()求的是byte字节的数量
    n := len(s)
    fmt.Println(n)
 
    // for i := 0; i < len(s); i++ {
    //  fmt.Println(s[i])
    //  fmt.Printf("%c\n", s[i]) // %c:字符
    // }
 
    // 字符串修改
    s2 := "白萝卜" // [白 萝 卜]
    s3 := []rune(s2) // 把字符串强制转换成了一个rune切片
    s3[0] = '红' // 单引号表示字符
    fmt.Println(string(s3)) // 把rune切片强制转换成字符串
 
    c1 := "红"
    c2 := '红' // rune(int32)
    fmt.Printf("c1:%T c2:%T\n", c1, c2) // c1:string c2:int32
    c3 := "H"
    c4 := 'H'
    c5 := byte('H')
    fmt.Printf("c3:%T c4:%T\n", c3, c4) // c3:string c4:int32
    fmt.Printf("c4:%d\n", c4) // c4:72
    fmt.Printf("c5:%T\n", c5) // c5:uint8
 
    // 类型转换
    n1 := 10 // int
    var f float64
    f = float64(n1)
    fmt.Println(f)
    fmt.Printf("%T\n", f) // float64
}

总结

到此这篇关于GO语言入门学习之基本数据类型字符串的文章就介绍到这了,更多相关GO语言数据类型字符串内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/QiaoPengjun/p/16154604.html

延伸 · 阅读

精彩推荐
  • Golanggolang实现分页算法实例代码

    golang实现分页算法实例代码

    这篇文章主要给大家介绍了关于golang实现分页算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    JimPang5532020-05-19
  • GolangGo语言中的方法、接口和嵌入类型详解

    Go语言中的方法、接口和嵌入类型详解

    这篇文章主要介绍了Go语言中的方法、接口和嵌入类型详解,本文分别对它们做了详细讲解,需要的朋友可以参考下 ...

    junjie2142020-04-09
  • Golanglinux下通过go语言获得系统进程cpu使用情况的方法

    linux下通过go语言获得系统进程cpu使用情况的方法

    这篇文章主要介绍了linux下通过go语言获得系统进程cpu使用情况的方法,实例分析了Go语言使用linux的系统命令ps来分析cpu使用情况的技巧,需要的朋友可以参考...

    两把刷子7352020-04-20
  • Golang浅谈go中cgo的几种使用方式

    浅谈go中cgo的几种使用方式

    本文主要介绍了浅谈go中cgo的几种使用方式,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Yuan_sr11602022-09-09
  • Golang对Golang import 导入包语法详解

    对Golang import 导入包语法详解

    今天小编就为大家分享一篇对Golang import 导入包语法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    独一无二的小个性5392020-05-26
  • Golanggolang实现数组分割的示例代码

    golang实现数组分割的示例代码

    本文主要介绍了golang实现数组分割的示例代码,要求把数组分割成多个正整数大小的数组,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴...

    _little_stone10852022-01-26
  • GolangGo1.16新特性embed打包静态资源文件实现

    Go1.16新特性embed打包静态资源文件实现

    这篇文章主要为大家介绍了Go 1.16新特性embed打包静态资源文件的实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日...

    八两9582022-07-22
  • GolangGo语言实现自动填写古诗词实例代码

    Go语言实现自动填写古诗词实例代码

    这篇文章主要给大家介绍了关于Go语言实现自动填写古诗词的相关资料,这是最近在项目中遇到的一个需求,文中通过示例代码介绍的非常详细,需要的朋...

    FengY5952020-05-14