我正试图让io.Reader从这个天气回来,这是我给出的链接或路径.对于某些上下文我正在使用标志
func getString(link, path string) (io.Reader, error) {
var dick io.ReadWriter
if link != "" {
resp, err := http.Get(link)
if err != nil {
return nil, err
}
io.Copy(dick, resp.Body)
}
if path != "" {
file, err := os.Open(path)
if err != nil {
return nil, err
}
io.Copy(dick, file)
}
return dick, nil
}
Run Code Online (Sandbox Code Playgroud)
和繁荣
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x46e949]
Run Code Online (Sandbox Code Playgroud)
这个坏男孩来了
io.ReadWriter是一个接口,你需要的是一个io.ReadWriter写入(通过io.Copy)并从中返回io.Reader接口的实例.
想到的一种类型是a bytes.Buffer.你的代码看起来像这样
func getString(link, path string) (io.Reader, error) {
dick := bytes.NewBuffer(nil)
if link != "" {
resp, err := http.Get(link)
if err != nil {
return nil, err
}
io.Copy(dick, resp.Body)
}
if path != "" {
file, err := os.Open(path)
if err != nil {
return nil, err
}
io.Copy(dick, file)
}
return dick, nil
}
Run Code Online (Sandbox Code Playgroud)
你也吞下了错误,io.Copy这不是一个好主意.
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |