字符串

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 }

GO语言学习——基本数据类型字符串的更多相关文章

  1. Go语言学习之数据类型

    ### Go语言学习之数据类型 数据类型的转换 1.Go语言不允许隐式类型转换(显示转换才可以) 2.别名和原有类型也不能进行隐式类型转换 例子: func TestImplicit(t *testi ...

  2. C语言学习笔记---3.字符串格式化输入输出

    1.C语言字符串 字符串(character string)是一个或多个字符的序列,例如:"Zing went the strings of my heart!" C语言没有专门用 ...

  3. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

  4. GO语言学习——基本数据类型——整型、浮点型、复数、布尔值、fmt占位符

    基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8.int16.int32.int64 对应的无符号整型:uint8.uint16.uint32.uint64 其中,uint8就是我们熟 ...

  5. R语言学习笔记:字符串处理

    想在R语言中生成一个图形文件的文件名,前缀是fitbit,后面跟上月份,再加上".jpg",先不百度,试了试其它语言的类似语法,没一个可行的: C#中:"fitbit&q ...

  6. Dart语言学习(四)Dart字符串

    一.字符串的创建 使用 单引号,双引号 创建字符串 使用 三个引号或双引号 创建多行字符串 使用 r 创建原始 raw 字符串 String str1 = 'Hello';//"" ...

  7. 【C语言学习笔记】字符串拼接的3种方法 .

    昨天晚上和@buptpatriot讨论函数返回指针(malloc生成的)的问题,提到字符串拼接,做个总结. #include<stdio.h> #include<stdlib.h&g ...

  8. C语言学习笔记之字符串拼接的2种方法——strcat、sprintf

    本文为原创文章,转载请标明出处 1. 使用strcat进行字符串拼接 #include <stdio.h> #include <stdlib.h> #include <s ...

  9. C语言学习关于数据类型的一些知识点(初学者)

    1.整型常量的的前缀:(1)十进制常数无前缀. (2)八进制常数前缀为0,八进制常数无符号. (3)十六进制常数前缀为0X或0x. 注:在程序中是根据前缀来区分各种进制数的.因此在书写常数时不要把前缀 ...

随机推荐

  1. 4月20日 python学习总结 套接字工作流程

    一.套接字工作流程 一个生活中的场景.你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了.等交流结束,挂断电话结束此次交谈. 生活中的场景就解释了这 ...

  2. 内网穿透工具--frp

    对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一个使用 ...

  3. [SniperOJ](web)图书管理系统 注入 源码泄露

    0x00 题目概况 题目地址:http://www.sniperoj.cn:10000/ 这是一道注入题,存在git源码泄露,使用githack(freebuf有工具介绍)把源码脱下来,进行审计,然后 ...

  4. KestrelServer详解[2]: 网络链接的创建

    <注册监听终结点(Endpoint)>已经详细讲述了如何使用KestrelServer,现在我们来简单聊聊这种处理器的总体设计和实现原理.当KestrelServer启动的时候,注册的每个 ...

  5. css文本溢出解决方案

    1.普通单行截断省略 overflow:hidden; 文字长度超出限定宽度,则隐藏超出的内容) text-overflow:ellipsis;(设置文字在一行显示,不能换行) white-space ...

  6. TIME_WAIT 优化

    ·[场景描述] HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟. 如果我们使用了nginx去作为 ...

  7. python 保存图片被截断

    运行如下代码发现横坐标属性值被截断 plt.savefig('D:\\project\\python\\zhifangtu\\a.png') plt.show() plt.savefig('D:\\p ...

  8. Docker镜像构建之docker commit

    我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求.尽管已经从繁琐的部署工作中解放出来了,但是在实际开发时,我们可能希望镜像包含整个项目的完整环境,在其他机器上拉取打 ...

  9. DSP选型

    DSP芯片也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器具,其主机应用是实时快速地实现各种数字信号处理算法.根据数字信号处理的要求,DSP芯片一般具有如下主要特点: (1)在一个指 ...

  10. 前端网络安全——Cookies

    一.Cookies特性 1.前端数据存储 2.后端通过http头设置 3.请求时通过http头传给后端 4.前端可读写 5.遵守同源策略 二.Cookies内容 1.域名 2.有效期,删除cookie ...