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

目录
  • 字符串
  • 字符串转义符
  • byte和rune类型
  • 修改字符串
  • 类型转换
  • 总结

字符串

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

  • uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
  • 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语言入门学习之基本数据类型字符串的文章就介绍到这了,更多相关GO语言数据类型字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Golang 字符串与字节数组互转的实现

    目录 一.字符串与字节数组? 二.详细代码 1.字节转字符串 2.字符串转字节数组 3.完整运行测试 总结 一.字符串与字节数组? 字符串是 Go 语言中最常用的基础数据类型之一,本质上是只读的字符型数组,虽然字符串往往都被看做是一个整体,但是实际上字符串是一片连续的内存空间. Go 语言中另外一个类型字节(Byte).在ASCII中,一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间.英文标点占一个字节,中文标点占两个字节.一个Byte数组中的元素对应一个ASCII码. 二.详细代码

  • go语言中五种字符串的拼接方式(小结)

    目录 +拼接方式 sprintf函数 Join函数 buffer.Builderbuffer.WriteString函数 buffer.Builder函数 ps:直接使用运算符 主要结论 +拼接方式 这种方式是我在写golang经常用的方式,go语言用+拼接,php使用.拼接,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响. func main() { s1 := "hello" s2 := "word" s3 :=

  • 深入理解 Go 中的字符串

    目录 字符串的本质 字符串的底层原理 字符串的本质 在编程语言中,字符串发挥着重要的角色.字符串背后的数据结构一般有两种类型: 一种在编译时指定长度,不能修改 一种具有动态的长度,可以修改. 比如:与Python 中的字符串一样,Go 语言中的字符串不能被修改,只能被访问.在 Python 中,如果改变一个字符串的值会得到如下结果: >>> hi = "Hello" >>> hi 'Hello' >>> hi[0] = 'h' Tr

  • Golang strings包常用字符串操作函数

    目录 func Contains func HasPrefix func HasSuffix func Replace func Split func ToLower func ToUpper func Repeat func Count func Index func Join 在编写代码的时候最常用到的就是字符串了,Golang 中的字符串统一使用 UTF-8 (属于Unicode编码的一种实现方式)进行编码,本篇文章将结合具体实例对常用的字符串操作函数进行介绍. func Contains

  • Go 字符串比较的实现示例

    目录 Compare 和 EqualFold 区别 忽略大小写比较 字符串比较, 可以直接使用 == 进行比较, 也可用用 strings.Compare 比较 go 中字符串比较有三种方式: == 比较 strings.Compare 比较 strings.EquslFold 比较 #### 代码示例 ```go fmt.Println("go"=="go") fmt.Println("GO"=="go") fmt.Prin

  • Go语言字符串常见操作的使用汇总

    目录 1. 字节数组 2. 头尾处理 3. 位置索引 4. 替换 5. 统计次数 6. 重复 7. 大小写 8. 去除字符 9. 字符串切片处理 10. 数值处理 1. 字节数组 字节与字符的区别 字节(Byte) 是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位 字符(Character) 是计算机中使用的字母.数字.字和符号,比如'A'.'B'.'$'.'&'等 一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示 通俗点来说

  • go语言生成随机数和随机字符串的实现方法

    目录 生成随机数 生成随机字符串 生成随机数 随机数的生成是计算机科学的一个研究领域,同时也是一种艺术.这是因为计算机是纯粹的逻辑机器,所以使用计算机生成随机数异常困难! 你可以用 math/rand 包来生成随机数.开始生成随机数之前首先需要一个种子,种子用于整个过程的初始化,它相当重要.因为如果你每次都用同样的种子初始化,那么就总是会得到相同的随机数序列.这意味着每个人都可以重新生成同一个序列,那这个序列就根本不能再算是随机的了! 我们将用来生成随机数的程序名为 randomNumbers.

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

    目录 字符串 字符串转义符 byte和rune类型 修改字符串 类型转换 总结 字符串 Go语言中的字符串以原生数据类型出现. Go 语言里的字符串的内部实现使用UTF-8编码. 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符 GO语言中字符串是用双引号包裹的 GO语言中单引号包裹的是字符 // 字符串 s := "Hello 中国" // 单独的字母.汉字.符合表示一个字符 c1 := 'h' c2 := '1' c3 := '中' //

  • C语言入门学习笔记之typedef简介

    在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称.和#define比较类似.但是又有不同的地方. typedef 创建的符号只能用于数据类型,不能用于值.而#define 创建的符号可以用于值. typedef 是由编译器来解释,而不是预处理器. typedef 使用起来更加灵活. 下面使用typedef定义一个数据类型 int main() { typedef unsigned char BYTE; BYTE c = 10; printf("%d \r\n&quo

  • C语言入门学习之fgets()函数和fputs()函数

    目录 fgets()函数 fputs()函数 总结 fgets()函数 fgets()函数和gets()函数一样,都是读取字符串,不过gets()函数通常用来从键盘读取输入的字符串,fgets()函数可以通过文件来读取字符串.下面通一个例子来演示fgets()函数的使用方法. int main() { FILE *in,*out; int ret; char ch; char str1[30],str2[30],str3[30]; /* 打开文件 */ in = fopen("123.txt&q

  • Go 语言入门学习之正则表达式

    目录 前言 什么是正则表达式 MatchString 函数 Compile 函数 MustCompile 函数 FindAllString 函数 FindAllStringIndex 函数 Split 函数 Go 正则表达式捕获组 正则表达式替换字符串 ReplaceAllStringFunc 函数 总结 前言 在计算中,我们经常需要将特定模式的字符或字符子集匹配为另一个字符串中的字符串.此技术用于使用特别的语法来搜索给定字符串中的特定字符集. 如果搜索到的模式匹配,或者在目标字符串中找到给定的

  • Go 语言入门学习之时间包

    目录 1.前言 2.日期和时间的表示 当前时间 日期函数 如何在Golang中获取当前UNIX的时间戳 3.访问时间组件的方法 1.前言 时间和日期对于任何编程语言来说都是一个非常重要的包. GO 语言 提供了 ​​time​​ 包来测量和显示时间.既可以根据所选时区获取当前时间,又可以使用 ​​time​​ 包添加当前时区的持续时间等. 2.日期和时间的表示 ​​time​​ 包提供了时间类型,用来表示时间中的一个特定时刻,主要有以下几个函数: Now() 函数:返回当前时区的当前时间 Dat

  • Go语言入门学习之Channel通道详解

    目录 前言 通道的声明 通道的初始化 发送和接收数据 通道的关闭 通道的容量与长度 缓冲通道与无缓冲通道 双向通道和单向通道 遍历通道 fibonacci 数列 参考文章: 总结 前言 不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,go 是通过 channel 进行协程 (goroutine) 之间的通信来实现数据共享. channel,就是一个管道,可以想像成 Go 协程之间通信的管道.它是一种队列式的数据结构,遵循先入先出的规则. 通道的声明 每个通道都只能传递一种数据类型的

  • 零基础易语言入门教程(四)之数据类型

    我们一起了解下易语言的数据类型,跟我们现实生活是一样的,分为文本型和数值型,即是我们所说的文科生和理科生的区别. 参考文章:详解易语言中的数据类型 方法和步骤如下所示: 1.数值型(到数值命令): 使用该命令可将文本型等一类数据更改为数值型:我们来输入一行代码看看其作用: 2.到文本()命令: 我们先输入一行代码试试,见下图 3.小结: 每一行代码前后的数据类型必须转换为同一种,方可进行相连,相加,"+"在数据为文本型时是连接作用,数值型的跟数学里的符号一样. 以上所述是小编给大家介绍

  • C语言入门之浅谈数据类型和变量常量

    目录 1.变量的作用域: 2.变量的生命周期: 1.字面常量,如:100,‘v’: 2.define宏定义的标识符常量 3.const修饰的常变量 4.枚举常量 总结 首先我们来罗列一下C语言的基本数据类型(未提及的后续将在关键字专题讲解): 类型名称 所占字节 char(字符型) %c 2 short(短整形) %d 2 int(整形) %d 4 long int(长整形) %ld 4 long long int(长整形) %lld 8 float(单精度浮点型) %f 4 double(双精

  • 零基础易语言入门教程(五)之逻辑型数据类型

    在上篇文章给大家介绍了零基础易语言入门教程(四)之数据类型,上篇针对数值到文本类型知识,今天给大家介绍下逻辑型数据. 具体方法和步骤如下所示: 1.逻辑型数据非真即假: 首先申请一个局部变量(A)类型为:逻辑型,编写代码为:A=1>2,那么输出的结果应为假,因等于1是赋值与1,然后代码中写道1大于2,所以这是假的,见下图所示: 2.关系运算符: 在上图大家需注意的是,A后面的等于号是赋值符号,而后面的≥,≠,<一些符号则是关系运算符. 关系运算符不是非要设置变量给其赋值才可以使用的,同样他可以

  • C语言入门篇--初识C语言及数据类型

    目录 1. 什么是C语言? 2.第一个C程序&&知识点 2.1 头文件 2.2 main函数 2.3 函数调用 2.4 return 0; 3. 数据类型 3.1 C语言数据类型 3.2 为什么有这么多数据类型? 3.3 各个数据类型的大小 1. 什么是C语言? (1)C语言是面向过程.编译型的编程语言(与C++.Java等面向对象的编程语言有所不同,ps:C与C++是兼容的),经过编译后最终形成可执行程序(即exe,可直接运行). (2)C语言非常经典,一般会在底层开发使用,Linux.

随机推荐