登录
首页 >  Golang >  Go问答

为什么golang编译器认为变量已声明但未使用?

来源:Golang技术栈

时间:2023-03-20 21:12:06 122浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《为什么golang编译器认为变量已声明但未使用?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我是golang的新手,我写了一个程序来测试io包:

func main() {
    readers := []io.Reader{
         strings.NewReader("from string reader"),
         bytes.NewBufferString("from bytes reader"),
    }

    reader := io.MultiReader(readers...)
    data := make([]byte, 1024)

    var err error
    //var n int

    for err != io.EOF {
        n, err := reader.Read(data)
        fmt.Printf("%s\n", data[:n])
    }
    os.Exit(0)
}

编译错误是“错误声明且未使用”。但我想我在 for 语句中使用了 err。为什么编译器会输出这个错误?

正确答案

for的err内部遮蔽了 for 的err外部,并且它没有被使用(for 内部的那个)。发生这种情况是因为您使用的是短变量声明(使用:=运算符),它声明了一个新err变量,该变量隐藏了在 for 之外声明的变量。

今天关于《为什么golang编译器认为变量已声明但未使用?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表