返回值为什么不能重定义?

func add(arr []int) (sum int) {
    sum := 0//此处错误了   必须要为sum = 0 
    for _, elem := range arr {
        sum += elem

    }
    return sum

}

我感觉不合理啊

共 5 个回复


zhoujianhe

函数定义的时候就已经定义了返回值和类型了,go的变量定义了就会初始化的啊,里面如果还能重定义,好像有点不符吧,个人这样理解的

# 0

madmen

函数已经定义了返回类型及返回值的名称,除非你这样

func add(arr []int)(sum int){
result:=0
sum=result
}
# 1

jimmykuu

你重定义了,那返回值还怎么赋值呢?你可以说那可以return xxx啊,那还要定义返回值干毛啊。

# 2

gihnius

你的问题很怪

返回值 为什么要能 重定义 ?

# 3

jemygraw

如果你是命名返回值的话,这个返回值变量名已经定义了。而“:=”的意思是声明并初始化一个变量。当然是重复定义这个变量了。而重复定义一个变量当然是不可以的。

# 4