golang中的变量范围

时间:2016-07-17 10:05:18

标签: arrays go scope

我是Go语言的新手,想在下面学习基本的基础我粘贴例子。这个例子中的问题是我无法访问for循环中的数字变量。它显示此错误

  

“声明号码而不使用”

。请帮帮我:(

package main
import(
    "fmt"
)

func main() {    
    samlestNumber()
}

func samlestNumber()  {
    x := []int{
        48,96,86,68,
        57,82,63,70,
        37,34,83,27,
        19,97, 9,17,
    }

    //x = append(x,6,7)
    var number int = x[0]
    for _,element := range x {

        if element < x[0] {
            number = element
        }    
        fmt.Println(" :::: ",element)    
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为您只是声明并为number分配值。你永远不会在任何地方使用它(即以任何方式指代它所拥有的价值)。在您的代码中,您可以安全地删除number声明和number = x[0],但它不会更改程序行为。

然而,正确的实现将返回函数中的最小数字:

package main
import(
    "fmt"
)

func main() {
    n := samlestNumber()
    fmt.Println("Smallest Number =", n)
}

func samlestNumber() int { // add a return type
    x := []int{
        48,96,86,68,
        57,82,63,70,
        37,34,83,27,
        19,97, 9,17,
    }

    //x = append(x,6,7)
    var number int = x[0]
    for _,element := range x {

        // always compare to smallest number. Even if you don't return
        // number anymore, you are still accessing the value held by
        // the number variable. So even making this change alone will
        // make the compiler error go away 
        if element < number {
            number = element
        }

        fmt.Println(" :::: ",element)
    }
    return number // return number
}
相关问题