字符串

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

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

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

修改字符串

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

类型转换

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

T(表达式)

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

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 }

最新文章

  1. IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1
  2. Excel 统计在某个区间内数值的个数
  3. UVAL1277_Cops and Thieves
  4. 解决linux部署项目后,第一次访问初始化数据源的时候很慢的问题
  5. [MobilewebApp]图片的适配与清晰度
  6. iOS:FFmpeg视频播放和直播框架
  7. Linux下控制器IO地址
  8. jq事件冒泡问题
  9. Cannot retrieve metalink for repository: epel. Please verify its path and try again
  10. ssh通过密钥免密登录linux服务器
  11. win7+ubuntu双系统安装攻略
  12. CnPack for delphi xe5
  13. cas sso单点登录系列7_ 单点登录cas常见问题系列汇总
  14. TensorFlow之CNN:运用Batch Norm、Dropout和早停优化卷积神经网络
  15. MongoDB一键安装
  16. RC1015 cannot open include file &#39;atlres.h&#39;
  17. java程序中实现打开 某个指定浏览器
  18. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 1.什么都没过滤的入门情况
  19. BroadcastReceiver之实现锁屏、解锁样例
  20. 导出Office365中的组及成员

热门文章

  1. 如何用系统命令sc修改系统服务
  2. MyISAM Static 和 MyISAM Dynamic 有什么区别?
  3. 在 mapper 中如何传递多个参数?
  4. 本地连接MySQL云服务器步骤与解决方案
  5. Redis String Type
  6. 线程 B 怎么知道线程 A 修改了变量?
  7. runnable 和 callable 有什么区别
  8. c++的常用库
  9. C++ | 程序编译连接原理
  10. 用jq实现移动端滑动轮播以及定时轮播效果