【发布时间】:2018-10-09 02:26:27
【问题描述】:
对于下面的代码,它似乎进入了死循环。
在s, err := minusOne(s) 之后,s 根据日志信息被缩短。
但是之前的减号日志显示它从未改变过。
func minusOne(s string) (string, error) {
if len(s) >= 0 {
return s[1:], nil
}
return "", nil
}
func TestStr(t *testing.T) {
s := "hello world"
for {
log.Println("before minus", s)
s, err := minusOne(s)
log.Println("after minus", s)
if err == nil && len(s) == 0 {
break
}
}
}
如果我稍微改变一下,它就会像预期的那样工作。
s1, err := minusOne(s)
s = s1
或者如果我删除了减号函数中返回的错误,它也可以工作。
s = minusOne(s)
我真的无法理解。 有人可以帮忙吗?
【问题讨论】:
标签: string go variable-assignment