go is shadowed during return

func test( req *Req) (diff string, err error) {
	if reqParam != nil && len(reqParam.UserID) > 0 {
		diff, err := compareMemo(reqParam)
		if err != nil {
			return
		}
}

因爲上面diff, err是新的變量不是返回值列表裏面變量
無返回值的return,會把返回值列表中的retI和retF返回出去,而不是新的作用域裏的retF
改爲

func test( req *Req) (diff string, err error) {
	if reqParam != nil && len(reqParam.UserID) > 0 {
		diff, err = compareMemo(reqParam)
		if err != nil {
			return
		}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章