golang中字符串与数组,切片的转换

go语言将字符串作为一种原生的基本数据类型,字符串的初始化可以使用字符串的字面量

 var  a  =  "hello,world"

1) 字符串是常量,可以通过类似数组的索引访问其字节单元,但是不能修改某个字节的值

var a  =  "hello,world"

b := a[0]

a[1]='a'

package main

import "fmt"

func main() {
	var a = "hello , world"
	b := []byte(a)//此时打印b,以rane方式输出所有码元
	// b := a[0] // 数组a的第0个索引
	// fmt.Printf("%c", b) //以UTF-8形式展示所有
	// a[1] = 'a'
	fmt.Println(b)
}

按数组切割,数组不能修改值,所以

a[1] ='a'  是错误的

2)字符串转换为切片[]byte(s)要慎用,尤其是当数据量较大时,每转换一次都需要复制内容

3)字符串尾部不包含null字符

4)字符串类型底层实现是一个二元的数据结构,一个是指向字节数组的起点,另一个是长度

5)基于字符串创建的切片和原字符串指向相同的底层字符数组,一样不能修改,对字符串的切片操作返回的子串仍然是string,而非slice

package main

import "fmt"

func main() {
	a := "hello ,world"
	b := a[0:4]
	c := a[1:]
	d := a[:4]
	fmt.Printf("b=%v,c=%v,d=%v \n", b, c, d)
	fmt.Printf("%#v,%#v,%#v", b, c, d)

}

6)字符串和切片的转换:字符串可以转换为字节数组,也可以转换为unicode的字节数组

 

e  := []byte(a)
f  := []rune(a)

7)字符串的运算

a := "hello"
b := "world"
c  := a+b  //字符串的拼接
len(a) //内置函数获取字符串的长度
d := "hello,世界!"
for  i := 0;i < len(d);i++ {
   fmt.println(d[i])
} //遍历字节数组
package main

import "fmt"

func main() {
	a := "hello"
	b := "world"
	c := a + b
	fmt.Println(len(c))
	d := "hello,世界!"
	e := []rune(d) //转rune类型遍历
	for i := 0; i < len(d); i++ {
		fmt.Println(d[i])
	}
	for _, v := range e {
		fmt.Printf("%c", v)
	}
}

 

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

人生30一道坎

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值