如何使用GoNewRequest方法

如何使用GoNewRequest方法,go,Go,所以,我刚刚开始学习Go,我正在尝试学习HTTPpackage。我在网上找到了这个节目 headers := make(map[string]string) headers["authorization"] = "1432536546" //the auhorization string url := "anUrl\" req, err := http.NewRequest("DELETE", url, headers) if err != nil { panic(err) }

所以,我刚刚开始学习Go,我正在尝试学习
HTTP
package。我在网上找到了这个节目

headers := make(map[string]string)
headers["authorization"] = "1432536546" //the auhorization string

url :=    "anUrl\"

req, err := http.NewRequest("DELETE", url, headers)
if err != nil {
    panic(err)
}
但这是错误的,因为这样的地图似乎无法使用,因为它们没有实现
io.Reader
界面:

  cannot use headers (type map[string]string) as type io.Reader in argument to http.NewRequest:
  map[string]string does not implement io.Reader (missing Read method)

这是我第一次尝试的代码片段之一,我实际上是从我认为可靠的源代码中获得的,显然它无法编译。Go看起来很有趣,但它几乎没有教程和有用的文档。。。请帮助我,正确的方法是什么?

您的假设是正确的,您不能以那种方式使用
net/http
包中的方法

此外,这没有多大意义,因为
NewRequest
函数的第三个参数应该是请求的主体负载,而不是头

func NewRequest(method, urlStr string, body io.Reader) (*Request, error)
假设库没有错误,我的假设是这里的
http
包不是
net/http
包,而是作为
http
导入的某种其他http客户端。事实上,如果你导入

import (
  "github.com/foobar/someclient/http"
)
它也将被引用为
http
。您应该检查文件的导入

仅供参考,添加标题的正确方法是:

req, err := http.NewRequest("DELETE", "/path/to/something", nil)
if err != nil {
    // do something
}
req.Header.Add("authorization", "1432536546")
第三个参数是,用于POST请求。它不适用于标题。 要添加标题

req, err := http.NewRequest("DELETE", url, nil)
if err != nil{
    panic(err);
}

req.Header.Add("Authorization","1432536546") //string, string

Go文档确实提供了几个示例。这是
概述
一节中的第一个示例。

谢谢,这很有效,即使我们可能不应该阅读编程语言的sorce代码来使用它。还有两个问题:那么,这是如何工作的?如果我在newRequest调用后修改请求,那么请求实际上是在什么时候发送的?还有:没有办法一次添加整个映射?这只是语法,但可能是nice@Micoloth您不需要阅读源代码,您可以尝试阅读文档。。。不,您不能添加整个映射,但是您可以为k,v:=yourMap{req.Headers.add(k,v)}@Micoloth查看概述中的第三个示例。