golang中的string和byte理解
有些鸟儿是注定不会被关在牢笼里的,它们的每一片羽毛都闪耀着自由的光辉
Go语言中有两种可以储存一串字符的类型,分别是字符串string
和byte
类型数组[]byte
,但是他们直接并不能直接使用等于号赋值,也不能单纯的转换,而是要通过切片来进行转换。
string转换成[]byte
可以直接使用[]byte(str)
强制转换。
1 | package main |
可以看到[]byte
输出的结果正是string
的各个字符对应的ASCII
码。
或者
1 | func String2Bytes(s string) []byte { |
[]byte转换成string
要将byte
数组转换成string
不能直接转换,而需要将[]byte
的切片转换。即使用string(数组名[:])
进行转换。
1 | package main |
或者
1 | // []byte to string |
再或者
1 | func Bytes2String(b []byte) string { |
二者区别
对于[]byte与string而言,两者之间最大的区别就是string的值不能改变。这该如何理解呢?下面通过两个例子来说明。
对于[]byte来说,以下操作是可行的:
1 | b := []byte("Hello Gopher!") |
string,修改操作是被禁止的:
1 | s := "Hello Gopher!" |
而string能支持这样的操作:
1 | s := "Hello Gopher!" |
字符串的值不能被更改,但可以被替换。