gpt4 book ai didi

io - 为什么 io.WriterString 会出现运行时错误?

转载 作者:IT王子 更新时间:2023-10-29 02:25:39 25 4
gpt4 key购买 nike

运行以下代码时,我收到“ panic :运行时错误:无效内存地址或零指针取消引用”。我不明白为什么并且似乎无法从我认为问题所在的 io.WriteString(w, s) 捕获错误。有人能指出我正确的方向吗?

package main

import(
"io"
"fmt"
)

func main() {
s := "hei"
var w io.Writer
_, err := io.WriteString(w, s)
if err != nil{
fmt.Println(s)
}
}

最佳答案

如果你添加

fmt.Println(w)

var w io.Writer之后, 你会看到打印的是 <nil> .这意味着您只是在创建一个变量,而不是将其初始化为实际值。然后您尝试将它传递给需要真实 io.Writer 的函数。对象,但得到一个 nil。

此外,io.Writer是一个接口(interface)(参见 http://golang.org/pkg/io/#Writer ),因此您需要找到它的具体实现(例如 os.Stdout )才能实例化它。

有关 io 的更多信息包,见http://golang.org/pkg/io/ .

P.S. 也许您将其与 C++ 混淆了;在 C++ 中,当你执行 io::Writer w 时, 然后 w自动初始化以包含 io::Writer 的新副本,但是,Go 代码 var w io.Writer真的等同于io::Writer* w在 C++ 中,很明显 w在这种情况下将包含 null或者更可能是一些不确定的垃圾。 (尽管 Go 保证它是 null)。

关于io - 为什么 io.WriterString 会出现运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com