码迷,mamicode.com
首页 > 其他好文 > 详细

Go切片和string

时间:2020-01-23 09:36:56      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:数字   int   报错   pre   func   div   因此   imp   不可   

package main

import (
	"fmt"
)

func main() {

	//string底层是一个byte数组,因此string也可以进行切片处理
	str := "hello@atguigu" // :=类型推导 
	//使用切片获取到 atguigu
	slice := str[6:]
	fmt.Println("slice=", slice)

	//string是不可变的,也就说不能通过 str[0] = ‘z‘ 方式来修改字符串
	//str[0] = ‘z‘ [编译不会通过,报错,原因是string是不可变]

	//如果需要修改字符串,可以先将string -> []byte / 或者 []rune -> 修改 -> 重写转成string
	//"hello@atguigu" =>改成 "zello@atguigu"
	arr1 := []byte(str)
	arr1[0] = ‘z‘
	str = string(arr1)
	fmt.Println("str=", str)

	// 细节,我们转成[]byte后,可以处理英文和数字,但是不能处理中文
	// 原因是 []byte 字节来处理 ,而一个汉字,是3个字节,因此就会出现乱码
	// 解决方法是 将  string 转成 []rune 即可, 因为 []rune是按字符处理,兼容汉字
	arr2 := []rune(str)
	arr2[0] = ‘北‘
	str2 = string(arr2)
	fmt.Println("str=", str2)
}

Go切片和string

标签:数字   int   报错   pre   func   div   因此   imp   不可   

原文地址:https://www.cnblogs.com/yzg-14/p/12229975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!