Golang字符串

Posted scofi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang字符串相关的知识,希望对你有一定的参考价值。

字符串在任何开发语言中都非常重要,处理好字符串在日常开发中占有非常大的比重,也是是否熟练掌握一门语言的标志

一、字符串基础

1、Go字符串底层就是Byte数组

2、在golang中,字符,字符串中打印单个字符的本质就是一个整数,是该字符对应的utf-8编码的码值

平时开发过程中遍历字符串情况时常有,不过要注意中文:

package main

import "fmt"

func main() {
	var s string = "123hello你好"
	var b []byte = []byte(s)
	var r []rune = []rune(s)
	// 使用[]byte, 如果字符串中有中文将会出现乱码
	for i := 0; i < len(b); i++ {
		fmt.Printf("%c", s[i])
	}
	fmt.Println()
	// 用range循环字符串类型则不会有乱码
	for _, v := range s {
		fmt.Printf("%c", v)
	}
	fmt.Println()
	// 转为rune来存储用for循环也不会有乱码
	for i := 0; i < len(r); i++ {
		fmt.Printf("%c", r[i])
	}
	fmt.Println()
	// 来看看底层, byte数组里最大只能存储256,如果是汉字,编码超过了256,于是就分开存储了
	fmt.Println(b)  // [49 50 51 104 101 108 108 111 228 189 160 229 165 189]
	// rune是int32 可以存储的下,所以不会有问题
	fmt.Println(r)  // [49 50 51 104 101 108 108 111 20320 22909]
}

  

输出结果:

123hello你好
123hello你好
123hello你好
[49 50 51 104 101 108 108 111 228 189 160 229 165 189]
[49 50 51 104 101 108 108 111 20320 22909]

二、字符串操作

以上是关于Golang字符串的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

代码片段 - Golang 实现集合操作

Golang实践录:反射reflect的一些研究及代码汇总

json [Golang] golang #golang #snippets中有用的片段

java golang oop 2文章片段

golang 去练习片段