As the meaning of the variable depends on the scope in that case, it may create confusion and lead to unintended consequences.
Example:
for i := 0; i < len(nums); i++ {
for i := 0; i < len(nums); i++ {
}
}
The i variable in the embedded loop is shadowed. To get rid of shadowing, consider renaming the variable
in the embedded loop.
for i := 0; i < len(nums); i++ {
for j := 0; j < len(nums); j++ {
}
}