Для следующего кода, кажется, идет в тупик.
После 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
Или, если я уберу ошибку, возвращающуюся в функции minusOne, и это тоже сработает.
s = minusOne(s)
Я действительно не могу этого понять.
Кто-нибудь может помочь с этим?