 Golang Manual By AstaXie-20120522Flush() error func (tw *Writer) Write(b []byte) (n int, err error) func (tw *Writer) WriteHeader(hdr *Header) error Package files common.go reader.go writer.go Constants const ( // Types can be treated as an io.Reader to access the file's data. Example: tr := tar.NewReader(r) for { hdr, err := tr.Next() if err == io.EOF { // end of tar archive break } if err != nil writing at most hdr.Size bytes in total. Example: tw := tar.NewWriter(w) hdr := new(Header) hdr.Size = length of data in bytes // populate other hdr fields as desired if err := tw.WriteHeader(hdr); err != nil0 码力 | 6205 页 | 12.83 MB | 1 年前3 Golang Manual By AstaXie-20120522Flush() error func (tw *Writer) Write(b []byte) (n int, err error) func (tw *Writer) WriteHeader(hdr *Header) error Package files common.go reader.go writer.go Constants const ( // Types can be treated as an io.Reader to access the file's data. Example: tr := tar.NewReader(r) for { hdr, err := tr.Next() if err == io.EOF { // end of tar archive break } if err != nil writing at most hdr.Size bytes in total. Example: tw := tar.NewWriter(w) hdr := new(Header) hdr.Size = length of data in bytes // populate other hdr fields as desired if err := tw.WriteHeader(hdr); err != nil0 码力 | 6205 页 | 12.83 MB | 1 年前3
 Go 101 (Golang 101)  v1.21.0]byte{'G', 'o', 'l', 'a', 'n', 'g'} s := "Java" hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = len(a) fmt.Println(s) // Golang // Now '1', '0', '1'} bs := []byte("Golang") hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = 2 hdr.Cap = len(a) fmt.Printf("%s\n", bs) // Go dangerous. var hdr reflect.StringHeader hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) // Now the just allocated byte array has lose all // references and it can be garbage collected now. hdr.Len = 5 s :=0 码力 | 610 页 | 945.17 KB | 1 年前3 Go 101 (Golang 101)  v1.21.0]byte{'G', 'o', 'l', 'a', 'n', 'g'} s := "Java" hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = len(a) fmt.Println(s) // Golang // Now '1', '0', '1'} bs := []byte("Golang") hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = 2 hdr.Cap = len(a) fmt.Printf("%s\n", bs) // Go dangerous. var hdr reflect.StringHeader hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) // Now the just allocated byte array has lose all // references and it can be garbage collected now. hdr.Len = 5 s :=0 码力 | 610 页 | 945.17 KB | 1 年前3
 Go 101 (Golang 101)  v1.21.0'a', 'n', 'g'} 9| s := "Java" 10 | hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11 | hdr.Data = uintptr(unsafe.Pointer(&a)) 12 | hdr.Len = len(a) 13 | fmt.Println(s) // Golang := []byte("Golang") 12 | hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13 | hdr.Data = uintptr(unsafe.Pointer(&a)) 14 | 15 | hdr.Len = 2 16 | hdr.Cap = len(a) 17 | fmt.Printf("%s\n" var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // Now the just allocated byte array has lose all 4| // references and it can be garbage collected now. 5| hdr.Len0 码力 | 880 页 | 833.34 KB | 1 年前3 Go 101 (Golang 101)  v1.21.0'a', 'n', 'g'} 9| s := "Java" 10 | hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11 | hdr.Data = uintptr(unsafe.Pointer(&a)) 12 | hdr.Len = len(a) 13 | fmt.Println(s) // Golang := []byte("Golang") 12 | hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13 | hdr.Data = uintptr(unsafe.Pointer(&a)) 14 | 15 | hdr.Len = 2 16 | hdr.Cap = len(a) 17 | fmt.Printf("%s\n" var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // Now the just allocated byte array has lose all 4| // references and it can be garbage collected now. 5| hdr.Len0 码力 | 880 页 | 833.34 KB | 1 年前3
 Go 101 (Golang 101)  v1.21.0'l', 'a', 'n', 'g'} 9| s := "Java" 10| hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11| hdr.Data = uintptr(unsafe.Pointer(&a)) 12| hdr.Len = len(a) 13| fmt.Println(s) // Golang bs := []byte("Golang") 12| hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13| hdr.Data = uintptr(unsafe.Pointer(&a)) 14| 15| hdr.Len = 2 16| hdr.Cap = len(a) 17| fmt.Printf("%s\n" a new allocated SliceHeader. For example, the following code is dangerous. 1| var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // Now the just allocated byte array0 码力 | 630 页 | 3.77 MB | 1 年前3 Go 101 (Golang 101)  v1.21.0'l', 'a', 'n', 'g'} 9| s := "Java" 10| hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11| hdr.Data = uintptr(unsafe.Pointer(&a)) 12| hdr.Len = len(a) 13| fmt.Println(s) // Golang bs := []byte("Golang") 12| hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13| hdr.Data = uintptr(unsafe.Pointer(&a)) 14| 15| hdr.Len = 2 16| hdr.Cap = len(a) 17| fmt.Printf("%s\n" a new allocated SliceHeader. For example, the following code is dangerous. 1| var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // Now the just allocated byte array0 码力 | 630 页 | 3.77 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a'l', 'a', 'n', 'g'} 9| s := "Java" 10| hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11| hdr.Data = uintptr(unsafe.Pointer(&a)) 12| hdr.Len = len(a) 13| fmt.Println(s) // Golang bs := []byte("Golang") 12| hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13| hdr.Data = uintptr(unsafe.Pointer(&a)) 14| 15| hdr.Len = 2 16| hdr.Cap = len(a) 17| fmt.Printf("%s\n" var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 4| // 所引用,所以它可以被回收了。 5| hdr.Len = 5 6| s := *(*string)(unsafe.Pointer(&hdr)) //0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a'l', 'a', 'n', 'g'} 9| s := "Java" 10| hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11| hdr.Data = uintptr(unsafe.Pointer(&a)) 12| hdr.Len = len(a) 13| fmt.Println(s) // Golang bs := []byte("Golang") 12| hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13| hdr.Data = uintptr(unsafe.Pointer(&a)) 14| 15| hdr.Len = 2 16| hdr.Cap = len(a) 17| fmt.Printf("%s\n" var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 4| // 所引用,所以它可以被回收了。 5| hdr.Len = 5 6| s := *(*string)(unsafe.Pointer(&hdr)) //0 码力 | 591 页 | 21.40 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a'a', 'n', 'g'} 9| s := "Java" 10 | hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11 | hdr.Data = uintptr(unsafe.Pointer(&a)) 12 | hdr.Len = len(a) 13 | fmt.Println(s) // Golang := []byte("Golang") 12 | hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13 | hdr.Data = uintptr(unsafe.Pointer(&a)) 14 | 15 | hdr.Len = 2 16 | hdr.Cap = len(a) 17 | fmt.Printf("%s\n" 1| var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 4| // 所引用,所以它可以被回收了。 5| hdr.Len = 5 6| s := *(*string)(unsafe.Pointer(&hdr)) // 危险!0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a'a', 'n', 'g'} 9| s := "Java" 10 | hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) 11 | hdr.Data = uintptr(unsafe.Pointer(&a)) 12 | hdr.Len = len(a) 13 | fmt.Println(s) // Golang := []byte("Golang") 12 | hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) 13 | hdr.Data = uintptr(unsafe.Pointer(&a)) 14 | 15 | hdr.Len = 2 16 | hdr.Cap = len(a) 17 | fmt.Printf("%s\n" 1| var hdr reflect.StringHeader 2| hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) 3| // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 4| // 所引用,所以它可以被回收了。 5| hdr.Len = 5 6| s := *(*string)(unsafe.Pointer(&hdr)) // 危险!0 码力 | 821 页 | 956.82 KB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a]byte{'G', 'o', 'l', 'a', 'n', 'g'} s := "Java" hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = len(a) fmt.Println(s) // Golang // 现在, '1', '0', '1'} bs := []byte("Golang") hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = 2 hdr.Cap = len(a) fmt.Printf("%s\n", bs) // Go 比如,下面的代码是 不安全的: var hdr reflect.StringHeader hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 // 所引用,所以它可以被回收了。 hdr.Len = 5 s := *(*string)(unsafe.Pointer(&hdr)) // 危险! 下面是一0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a]byte{'G', 'o', 'l', 'a', 'n', 'g'} s := "Java" hdr := (*reflect.StringHeader)(unsafe.Pointer(&s)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = len(a) fmt.Println(s) // Golang // 现在, '1', '0', '1'} bs := []byte("Golang") hdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) hdr.Data = uintptr(unsafe.Pointer(&a)) hdr.Len = 2 hdr.Cap = len(a) fmt.Printf("%s\n", bs) // Go 比如,下面的代码是 不安全的: var hdr reflect.StringHeader hdr.Data = uintptr(unsafe.Pointer(new([5]byte))) // 在此时刻,上一行代码中刚开辟的数组内存块已经不再被任何值 // 所引用,所以它可以被回收了。 hdr.Len = 5 s := *(*string)(unsafe.Pointer(&hdr)) // 危险! 下面是一0 码力 | 608 页 | 1.08 MB | 1 年前3
共 7 条
- 1














