Go语言字符串和数组的相互转换

Go语言字符串和数组的相互转换,第1张

博客主页:🏆看看是李XX还是李歘歘 🏆

🌺每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。🌺

💗点关注不迷路,总有一些📖知识点📖是你想要的💗

⛽️今天的内容是  Go语言字符串和数组的相互转换     ⛽️💻💻💻

字符串转数组:
package main

import "fmt"

func main()  {
	s := "lichuachua"
	lcc1 := []rune(s)
	lcc2 := []byte(s)
	fmt.Printf("TYPE is %T,value is %+v\n",lcc1,lcc1)
	fmt.Printf("TYPE is %T,value is %+v\n",lcc2,lcc2)
}

很多同学好奇为类型为什么是[]int32和[]uint8 ,而不是rune和byte类型,别着急,下面有解释

数组转字符串:

分为字符数组转字符串和字符串数组转字符

package main

import (
	"fmt"
	"strings"
)

func main() {
	//字符串数组合并为字符串
	data := []string{"l", "i", "c", "h", "u", "a", "c", "h", "u", "a"}
	str := strings.Join(data, "")
	fmt.Println(str)

	//字符数组转换为字符串
	data1 := []byte{'l', 'i', 'c', 'h', 'u', 'a', 'c', 'h', 'u', 'a'}
	str1 := string(data1[:])
	fmt.Println(str1)
}

as we all know,go的字符格式有两种,rune和byte

Go语言的rune和byte的区别

在 Go 语言中支持两个字符类型,一个是 byte (实际上是 uint8 的别名),代表 UTF-8 字符串 的 单个 字节的值,用来储存ASCII码,表示一个ASCII码字符;另一个是 rune(实际上是int32),代表单个 Unicode字符,常用来处理unicode或utf-8字符(一切字符),就是rune的使用范围更大。

出于简化语言的考虑, Go 语言的多数 API 都假设字符串为 UTF-8编码,在unicode中,一个中文占两个字节,utf-8中一个中文占三个字节,golang默认的编码是utf-8编码,因此默认一个中文占三个字节 。尽管Unicode 字符在标准库中有支持,但实际上较少使用。

不同的字符串遍历方式对应不同的元素类型:

package main

import "fmt"

func main() {
	s:="asc"
	fmt.Printf("%T  ",s[0])
	fmt.Println()
	for i:= range s {
		fmt.Printf("%T ",s[i])
	}
	fmt.Println()
	for _, i2 := range s {
		fmt.Printf("%T ",i2)
	}
	fmt.Println()
	for i := 0; i < len(s); i++ {
		fmt.Printf("%T ",s[i])
	}
}

range一个返回值的对应uint8----byte

range两个返回值的对应int32----rune

for循环对应uint8----byte

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/996248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存