关于Golang中文件操作的字节类型和io包的相关链接备忘录已经查询
在使用Golang操作文件时,会涉及到字节类型(byte)。相比Ruby和JS操作文件时并不常见。下面是我调查的有关字节的信息,包括其身份、用途以及好处等。
原生的中文改述:
首先,byte型是什么?
-
- byteはuint8型の別名
- uint8は1byte(8bit)の整数(0 ~ 255)
GO语言规范
byte和string的关系
-
- 基本的はアルファベット文字は1byteで表現できる
例: 2進数110 0001 は 文字列’a’
1字节字符是什么意思?
- byte型のスライス []byte はstringに変換できるし、逆も可能
在使用 Go 时处理 UTF-8 字符串
为什么在文件操作中要使用字节?
-
- Golangで入出力を扱う場合は []byte を使う場合が多い
- 例えば、ファイルの入出力でよく使われる IO package の場合もReadやWriteで []byte が使われる
文件输入输出
-
- stringではなく []byte を使う理由は []byte のほうが使いやすいから
[]byte は stringよりもprimitiveなデータ型で、mutableだからsubsetの置換など取り扱いがしやすいから(あってる?)
Go 的 string 是 byte array 的一个子集,具有一些附加功能的不同类型。
虽然有一些区别,但主要的区别在于:
1. 不能获取切片(slice)或元素的地址。
2. 不能逐个元素地修改,是不可变的:x[i] = 1 等操作是不允许的。可以理解为,string 是带有 byte array 的结构体,它具有比数组更少的 API,用于进行一些小的处理。
不懂 Go 的 []byte。
在string和[]byte之间转换时务必注意内存的使用。
当使用golang将字符串(string)转换为字节切片([]byte)时,会发生内存拷贝。
对于 []byte 到 string 的转换,使用 *(*string)(unsafe.Pointer(&[]byte)) 的方式似乎更快一些。
我试图对在经常被忽视的Go语言中将字节转换为字符串的方法进行基准测试。
关于IO方面的食谱和技巧
Golang中的高效流式传输。