No. There is no right answer for handling overflow. In Go, they chose to make length overflow an illegal value, rather than ignoring it.

```
package main
import "fmt"
func main() {
const maxInt = int(^uint(0) >> 1)
var i int = maxInt
fmt.Printf("%T: %d, %d\n", i, i, i+1)
const maxUint = uint(^uint(0))
var u uint = maxUint
fmt.Printf("%T: %d, %d\n", u, u, u+1)
}
```

https://play.golang.org/p/OyibRWBTT2v

```
int: 9223372036854775807, -9223372036854775808
uint: 18446744073709551615, 0
```

No. Go uses the mathematics definition.

Terminology for signs

When 0 is said to be neither positive nor negative, the following phrases may refer to the sign of a number:

- A number is
**positive** if it is greater than zero.
- A number is
**negative** if it is less than zero.
- A number is
**non-negative** if it is greater than or equal to zero.
- A number is
**non-positive** if it is less than or equal to zero.

Wikipedia: Sign (mathematics): Terminology for signs