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
		}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章