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

 更新时间:2022年04月17日 08:12:45   作者:PENGJUNQIAO  
字符串在Go语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样,下面这篇文章主要给大家介绍了关于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 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语言数据类型字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang gorm的关系关联实现示例

    golang gorm的关系关联实现示例

    这篇文章主要为大家介绍了golang gorm的关系关联实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 详解Golang Map中的key为什么是无序的

    详解Golang Map中的key为什么是无序的

    本文主要介绍了Golang Map中的key为什么是无序的,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Go语言实现的最简单数独解法

    Go语言实现的最简单数独解法

    前面给大家介绍过使用javascript实现的简单的数独解法,小伙伴们都非常喜欢,今天我们再来分享一则go语言实现的简单的数独解法,有需要的小伙伴来参考下。
    2015-03-03
  • Go语言中函数的参数传递与调用的基本方法

    Go语言中函数的参数传递与调用的基本方法

    这篇文章主要介绍了Go语言中函数的参数传递与调用的基本方法,是golang入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • C语言的10大基础算法

    C语言的10大基础算法

    算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。这篇文章主要介绍了C语言的10大基础算法,需要的朋友可以参考下
    2019-09-09
  • golang网络socket粘包问题的解决方法

    golang网络socket粘包问题的解决方法

    这篇文章主要介绍了golang网络socket粘包问题的解决方法,简单讲述了socket粘包的定义并结合实例形式分析了Go语言解决粘包问题的方法,需要的朋友可以参考下
    2016-07-07
  • GoLang 逃逸分析的机制详解

    GoLang 逃逸分析的机制详解

    这篇文章主要介绍了GoLang-逃逸分析的机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Go语言的反射reflect使用大全

    Go语言的反射reflect使用大全

    Go语言中reflect包提供了运行时反射的功能,本文主要介绍了Go语言的反射reflect使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Golang使用channel实现数据汇总的方法详解

    Golang使用channel实现数据汇总的方法详解

    这篇文章主要为大家详细介绍了在并发编程中数据汇总的问题,并探讨了在并发环境下使用互斥锁和通道两种方式来保证数据安全性的方法,需要的可以参考一下
    2023-05-05
  • Golang使用Consul详解

    Golang使用Consul详解

    Consul是一个服务发现软件, 提供了服务发现\键值存储\健康检查等功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论