内容简介:Unicode是一种常用的字符串函数包:strings和strconv
- string是数据类型, 不是引用或指针类型
- string是 只读的byte slice ,len()返回它所包含的 byte数 (并不等同于 字符数 )
- string的byte数组可以存放 任何数据
func TestStringBasic(t *testing.T) {
var s string
t.Log(s) // 初始化为默认零值“”
s = "hello"
t.Log(len(s)) // 5
// string是不可变的byte slice
// s[1] = '3' // cannot assign to s[1]
// 可以存储任何二进制数据
s = "\xE4\xB8\xAD"
t.Log(s) // 中
}
编码与存储
Unicode是一种 字符集 (code point,字符编码),UTF-8是Unicode的 存储实现 (转换为 字节序列 的规则)
func TestStringEncode(t *testing.T) {
s := "中"
t.Log(len(s)) // 3,byte数
// rune:取出string中的Unicode
c := []rune(s)
t.Log(len(c)) // 1
t.Log(unsafe.Sizeof(c[0])) // 4
t.Logf("%s Unicode %X", s, c[0]) // 中 Unicode 4E2D
t.Logf("%s UTF-8 %X", s, s) // 中 UTF-8 E4B8AD
}
func TestStringToRune(t *testing.T) {
s := "中山市"
// range遍历,迭代输出的是rune,而不是byte
for _, c := range s {
// [1]表示都格式化第1个参数
t.Logf("%[1]c %[1]X", c)
// 中 4E2D
// 山 5C71
// 市 5E02
}
}
| 字符 | “中” |
|---|---|
| Unicode | 0x4E2D |
| UTF-8 | 0xE4B8AD |
| string/[]byte | [0xE4,0xB8,0xAD] |
字符串函数
常用的字符串函数包:strings和strconv
import (
"strconv"
"strings"
"testing"
)
func TestStrings(t *testing.T) {
s := "A,B,C"
// 分割
parts := strings.Split(s, ",")
for _, part := range parts {
t.Log(part)
}
// 连接
t.Log(strings.Join(parts, "-")) // A-B-C
}
func TestStringConvert(t *testing.T) {
s := strconv.Itoa(10)
t.Log("str" + s) // str10,Go不支持隐式转换,证明10是字符串
if i, err := strconv.Atoi("10"); err == nil {
t.Log(10 + i) // 20
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编译原理
Alfred V.Aho、Jeffrey D.Ullman、Ravi Sethi / 李建中 / 机械工业出版社 / 2003-8 / 55.00元
《编译原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。《编译原理》一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理......一起来看看 《编译原理》 这本书的介绍吧!