如何golang检查变量为零

sun*_*ndq 5 go

我的代码是这样的,当我使用时req, _ := http.NewRequest("GET", "http://www.github.com", content),它将发出异常:

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
Run Code Online (Sandbox Code Playgroud)

但是当我使用时req, _ := http.NewRequest("GET", "http://www.github.com", nil),为什么呢?我如何设置第三个参数值

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()
}
Run Code Online (Sandbox Code Playgroud)

0x4*_*D53 5

go接口由类型和值组成。仅当类型和值均为nil时,接口才为nil。您提供了一个类型,但没有提供值:因此NewRequest尝试在nil结构(接口的值)上调用Read。