os.File read方法如何修改golang中slice的字节?
How os.File Read method modifies the bytes of slice in golang?
例如,在下面的例子中,Data
不会在 main
块中改变 -
import "fmt"
func main(){
Data := make([]byte,3)
Modify(Data)
fmt.Println(Data) //output is [0,0,0]
}
func Modify(data []byte){
data = []byte{1,2,3}
}
但是在读取文件并将字节存储到切片 b
时,读取方法可以更改 b
中的字节 -
As Written Here
func (f *File) Read(b []byte) (n int, err error)
Read
方法如何修改调用者的b
?
Read
可以修改 b
因为你传递了一个非零长度的切片。 Read
将字节设置为 b
最大长度... 它不设置 b
切片 。您自己的函数 Modify
设置作为本地副本的切片。如果您按索引分配到切片长度,Modify
也有修改行为。
func Modify(data []byte) {
for i := 0; i < len(data); i++ {
data[i] = i
}
}
例如,在下面的例子中,Data
不会在 main
块中改变 -
import "fmt"
func main(){
Data := make([]byte,3)
Modify(Data)
fmt.Println(Data) //output is [0,0,0]
}
func Modify(data []byte){
data = []byte{1,2,3}
}
但是在读取文件并将字节存储到切片 b
时,读取方法可以更改 b
中的字节 -
As Written Here
func (f *File) Read(b []byte) (n int, err error)
Read
方法如何修改调用者的b
?
Read
可以修改 b
因为你传递了一个非零长度的切片。 Read
将字节设置为 b
最大长度... 它不设置 b
切片 。您自己的函数 Modify
设置作为本地副本的切片。如果您按索引分配到切片长度,Modify
也有修改行为。
func Modify(data []byte) {
for i := 0; i < len(data); i++ {
data[i] = i
}
}