GO语言学习——基本数据类型字符串

博客 动态
0 192
羽尘
羽尘 2022-04-16 23:58:03
悬赏:0 积分 收藏

GO语言学习——基本数据类型字符串

字符串

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

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

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

// 字符串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操作

package mainimport (	"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 语言的字符有以下两种:

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

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

修改字符串

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

类型转换

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

T(表达式)

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

package mainimport (	"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}
posted @ 2022-04-16 22:59 PENGJUNQIAO 阅读(3) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员