Go每日一题 今日(2025-03-02) 的题目如下

4194 次点击 · 7 赞 ·大约8小时之前 开始浏览   · 来源「Golang来啦」

下面这段代码有什么缺陷:

func sum(x, y int)(total int, error) {
	return x+y, nil
}
4194 阅读
44 回复
Natsuwau
Natsuwau · #1 · 3年之前

标记

Mrxuexi
Mrxuexi · #2 · 3年之前

两个返回值中前者命名了,error也要命名变量

yam8511
yam8511 · #3 · 3年之前

定義回傳值的部份,int 參數已給予變數名稱 (total),error參數也要給予變數名稱。 或者 int 參數的變數名稱也拿掉。

因為裡面實際回傳是使用 return x+y, nil,並未使用回傳變數名稱。 所以應該拿掉變數名稱比較恰當。

func sum(x, y int)(int, error) {
    return x+y, nil
}
feiyang
feiyang · #4 · 3年之前

打卡

sheep
sheep · #5 · 3年之前

mark

henry1
henry1 · #6 · 3年之前

ok

TimLiuDream
TimLiuDream · #7 · 3年之前

返回值中的 error 类型也需要定义参数。 或者返回值中使用:

(int, error)
euibieur894
euibieur894 · #8 · 3年之前

打卡

NovaChaos
NovaChaos · #9 · 3年之前

mk

a406299736
a406299736 · #10 · 3年之前

打卡。。。。。。

Zuos
Zuos · #11 · 3年之前

mark

brunce
brunce · #12 · 3年之前

mark

feiyang
feiyang · #13 · 3年之前

在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名

hypersus
hypersus · #14 · 3年之前

打卡

feiyang
feiyang · #15 · 2年之前
feiyangfeiyang #13 回复

在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名

第三次打卡,在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名

Alilestera
Alilestera · #16 · 2年之前

知识盲区,了解到了

ueueq
ueueq · #17 · 2年之前

多个返回值,有一个具名了,剩下的都要具名

brothersam
brothersam · #18 · 2年之前

func sum(x, y int)(int, error) 或者 func sum(x, y int)(total int, err error) 都可以

neil_liu
neil_liu · #19 · 2年之前

函数多返回值只要有一个返回值有命名,其他的也必须命名

QRQRQRqrqr
QRQRQRqrqr · #20 · 2年之前

func sum(x, y int)(total int, error) { return x+y, nil } 答案:第二个返回值没有命名。

解析:

在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名。如果有多个返回值必须加上括号();如果只有一个返回值且命名也必须加上括号()。这里的第一个返回值有命名 total,第二个没有命名,所以错误。

feiyang
feiyang · #21 · 2年之前

在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名。如果有多个返回值必须加上括号();如果只有一个返回值且命名也必须加上括号()。

a406299736
a406299736 · #22 · 2年之前

mark。、。、。、

huangyf168
huangyf168 · #23 · 2年之前

mark

bsdx866
bsdx866 · #24 · 2年之前

image.png

wzbwzt
wzbwzt · #25 · 2年之前

1

hasbug
hasbug · #26 · 2年之前

mark

mingtop
mingtop · #27 · 2年之前

还有x+y会溢出

wong
wong · #28 · 2年之前

结果会不会 int 溢出

beenleqi
beenleqi · #29 · 2年之前

mark

YuPeng
YuPeng · #30 · 2年之前

打卡

flyZ
flyZ · #31 · 2年之前

mark

ms895
ms895 · #32 · 2年之前

为什么我的关注点在 是否溢出 如果 x y 的取值是最大值 那么 x+y 会溢出 从而得不到正确的结果

huangyf168
huangyf168 · #33 · 2年之前

mark

hasbug
hasbug · #34 · 2年之前

mark

jan-bar
jan-bar · #35 · 2年之前
ms895ms895 #32 回复

为什么我的关注点在 是否溢出 如果 x y 的取值是最大值 那么 x+y 会溢出 从而得不到正确的结果

image.png

事实证明不会报错,但确实溢出了。

feiyang
feiyang · #36 · 2年之前

在函数有多个返回值时,只要有一个返回值有命名,其他的也必须命名。如果有多个返回值必须加上括号();如果只有一个返回值且命名也必须加上括号()。

Neightly
Neightly · #37 · 2年之前
func add[T ~int | ~int8 | ~int16 | ~int32 | ~int64](x, y T) T {
    r := x + y
    if (x^r)&(y^r) < 0 {
        panic("overflow")
    }
    return r
}

func subtract[T ~int | ~int8 | ~int16 | ~int32 | ~int64](x, y T) T {
    r := x - y
    if (x^y)&(x^r) < 0 {
        panic("overflow")
    }
    return r
}
YuPeng
YuPeng · #38 · 2年之前

需要全都命名 另外error如果一直时nil 可以取消这个返回值 精简函数

huangyf168
huangyf168 · #39 · 2年之前

mark

cllgeek
cllgeek · #40 · 大约1年之前

mark

zhangwei_go
zhangwei_go · #41 · 11月之前

第二个返回值没有命名。

BigBigGopher
BigBigGopher · #42 · 11月之前

mark

WangWangZhou
WangWangZhou · #43 · 11月之前

func sum(x, y int)(int, error) 或者 func sum(x, y int)(total int, err error) 都可以

zhangwei_go
zhangwei_go · #44 · 4月之前

答案:第二个返回值没有命名。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传