my code is like this, when I use req, _ := http.NewRequest("GET", "http://www.github.com", content)
, it will emit exception:
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0xffffffff addr=0x0 pc=0xaab78]
goroutine 1 [running]:
net/http.NewRequest(0x34f3b8, 0x3, 0x378020, 0x15, 0xfeec4350, 0x0, 0x10738801, 0x0, 0x0, 0x107000e0)
/usr/local/go/src/net/http/request.go:570 +0x498
main.main()
/tmp/sandbox056954284/main.go:17 +0xe0
but when I use req, _ := http.NewRequest("GET", "http://www.github.com", nil)
, it works, why? how I set the third argument value
package main
import (
"bytes"
"net/http"
)
func main() {
client := &http.Client{}
var content *bytes.Reader
content = nil
req, _ := http.NewRequest("GET", "http://www.github.com", content)
resp, _ := client.Do(req)
defer resp.Body.Close()
}
A go interface consists of a type and a value. An interface is only nil if both the type and the value are nil. You provided a type but no value: Therefore NewRequest
tried to call Read on a nil struct (the value of the interface).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With