Never recommend using reflect.SliceHeader, as it can not be used safely or portably.
diff --git a/cgo.md b/cgo.md
index 9373ae8..70571f0 100644
--- a/cgo.md
+++ b/cgo.md
@@ -245,28 +245,7 @@
 Go provides the following function to make a new Go byte slice from a C array:
   * ` func C.GoBytes(cArray unsafe.Pointer, length C.int) []byte `
 
-To create a Go slice backed by a C array (without copying the original data), one needs to acquire this length at runtime and use ` reflect.SliceHeader `.
-
-```go
-import "C"
-import "unsafe"
-...
-	var theCArray *C.YourType = C.getTheArray()
-	length := int(C.getTheArrayLength())
-	hdr := reflect.SliceHeader{
-		Data: uintptr(unsafe.Pointer(theCArray)),
-		Len:  length,
-		Cap:  length,
-	}
-	goSlice := *(*[]C.YourType)(unsafe.Pointer(&hdr))
-        // now goSlice is a Go slice backed by the C array
-```
-
-It is important to keep in mind that the Go garbage collector will not interact with this data, and that if it is freed from the C side of things, the behavior of any Go code using the slice is nondeterministic.
-
-Another simpler solution is casting the pointer to a pointer to a very big array and then
-slice it to the length that you want (also remember to set the cap if you're using Go 1.2
-or later), for example (see http://play.golang.org/p/XuC0xqtAIC for a runnable example):
+To create a Go slice backed by a C array (without copying the original data), one needs to acquire this length at runtime and use a type conversion to a pointer to a very big array and then slice it to the length that you want (also remember to set the cap if you're using Go 1.2 or later), for example (see http://play.golang.org/p/XuC0xqtAIC for a runnable example):
 
 ```go
 import "C"
@@ -277,6 +256,8 @@
         slice := (*[1 << 30]C.YourType)(unsafe.Pointer(theCArray))[:length:length]
 ```
 
+It is important to keep in mind that the Go garbage collector will not interact with this data, and that if it is freed from the C side of things, the behavior of any Go code using the slice is nondeterministic.
+
 ## Common Pitfalls
 ### Struct Alignment Issues
 As Go doesn't support packed struct (e.g., structs where maximum alignment is 1 byte), you can't