区块链技术博客
www.b2bchain.cn

Go 分布式学习利器(7)– 字符串

这篇文章主要介绍了Go 分布式学习利器(7)– 字符串的讲解,通过具体代码实例进行20993 讲解,并且分析了Go 分布式学习利器(7)– 字符串的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=20993

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

    • 1. 字符串 声明
    • 2. Unicode 和 utf-8的区别
    • 3. string中的字符遍历
    • 4. string的 字符分隔 和字符拼接函数
    • 5. string to Int和 Int to string函数

1. 字符串 声明

Go中的字符串类型与其他编译型语言的主要差异如下:

  • string 是数据类型,不是指针或 引用类型
  • string 是只读的byte slice, len 函数 可以显示该类型变量所包含的byte数
  • string 的byte数组可以存放 任何数据(文本数据/二进制数据)

如下测试函数:

func TestString(t *testing.T){ 	var s string 	t.Log(s)  	// s[1] = '3' // fail,字符串类型在Go中是只读的,尝试修改会报编译错误 	s = "hello" 	t.Log(len(s)) // 保存字符串中的byte数  	s = "xE4xB8xA5" // 存放二进制数据,表示一个中文的 "严" 	t.Log(s) 	t.Log(len(s)) } 

最后的输出如下:

=== RUN   TestString     string_test.go:7:      string_test.go:10: 5     string_test.go:13: 严     string_test.go:14: 3 

2. Unicode 和 utf-8的区别

  • Unicode 是一种字符集(code point)
  • UTF8 是 unicode 的存储实现(转换为字节序列的规则)

如下代码可以看到一个中文汉字在,unicode存储和具体的utf-8 格式下的16进制区别:

func TestUnicode(t *testing.T) { 	var s string 	s = "中"  	t.Log(len(s))  	c := []rune(s) // 转换为切片 	t.Log(len(c)) // rune 的长度 	t.Logf("中 unicode %x", c[0]) 	t.Logf("中 utf-8 %x",s) } 

输出如下:

=== RUN   TestUnicode     string_test.go:21: 3     string_test.go:24: 1     string_test.go:25: 中 unicode 4e2d     string_test.go:26: 中 utf-8 e4b8ad --- PASS: TestUnicode (0.00s) 

接下来我们可以整体出如下规则:
Go 分布式学习利器(7)-- 字符串
在 string中存储了3个byte,分别是E4,B8,AD 即 上图中的最后一行。

3. string中的字符遍历

string 中的遍历形式和之前提过的其他数组,map等形态类似。
不过这里的输出形式可能需要注意一下, 输出汉字时需要格式化输出为unicode的类型%[1]x

func TestStringTravel(t *testing.T) { 	s := "我是一个中国人" 	for _,c := range s { 		t.Logf("%[1]c %[1]d",c) // 第二个输出 %[1]d 表示string默认转换为的rune,不需要显示指定. 	} } 

输出如下:

=== RUN   TestStringTravel     string_test.go:32: 我 25105     string_test.go:32: 是 26159     string_test.go:32: 一 19968     string_test.go:32: 个 20010     string_test.go:32: 中 20013     string_test.go:32: 国 22269     string_test.go:32: 人 20154 

4. string的 字符分隔 和字符拼接函数

这里简单介绍一些Go语言中 字符串相关的常用函数:

  • strings.Split 字符串分隔函数
  • strings.Join 字符串拼接函数

注意实际使用的过程中strings是需要类似fmt,testing这样的import到程序中的

func TestStringFunc(t *testing.T) { 	s := "A,B,C" 	sp := strings.Split(s, ",") // split函数 通过逗号 将 s 分割为字符串数组 	for _,c := range sp{ 		t.Log(c) 	} 	t.Logf("%T %T",sp,sp[0])   	attach := strings.Join(sp,"-") // Join函数,重新指定具体的链接符,将字符串数组中的字符串用链接起来 	t.Log(attach) } 

输出如下:

=== RUN   TestStringFunc     string_test.go:44: A     string_test.go:44: B     string_test.go:44: C     string_test.go:46: []string string # 分隔后的结果是一个字符串数组,数组内的每一个元素都是字符串     string_test.go:50: A-B-C --- PASS: TestStringFunc (0.00s) 

5. string to Int和 Int to string函数

  • strconv.Itoa 整型转字符串
  • strconv.Atoi 字符串转整型

其中strconv.Atoi 字符串转整型函数 会返回两个值,一个是正常的转换成功的值,一个是转换失败的返回值。
测试函数如下:

func TestStringExchangeInt(t *testing.T) { 	s := strconv.Itoa(10) // 整型转字符串 	t.Log("str" + s)  	a,err:= strconv.Atoi("10") 	if err == nil{ 		t.Log(10 + a) 	} } 

输出如下:

=== RUN   TestStringExchangeInt     string_test.go:56: str10     string_test.go:60: 20 --- PASS: TestStringExchangeInt (0.00s) 

本文转自互联网,侵权联系删除Go 分布式学习利器(7)– 字符串

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Go 分布式学习利器(7)– 字符串
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们