gotchagoMajor
What is the difference between int and int64 in Go?
Viewed 0 times
int64andbetweentheintdifferencewhat
Problem
I have a string containing an integer (which has been read from a file).
I'm trying to convert the
The integer read from the file is small (i.e. it should fit in a normal int). If I pass a bitsize of 0, however, I get a result of type
Why is this happening? How do I just get a normal int? (If someone has a quick primer on when and why I should use the different int types, that would awesome!)
Edit: I can convert the int64 to a normal int using
I'm trying to convert the
string to an int using strconv.ParseInt(). ParseInt requires that I provide a bitsize (bit sizes 0, 8, 16, 32, and 64 correspond to int, int8, int16, int32, and int64).The integer read from the file is small (i.e. it should fit in a normal int). If I pass a bitsize of 0, however, I get a result of type
int64 (presumably because I'm running on a 64-bit OS).Why is this happening? How do I just get a normal int? (If someone has a quick primer on when and why I should use the different int types, that would awesome!)
Edit: I can convert the int64 to a normal int using
int([i64_var]). But I still don't understand why ParseInt() is giving me an int64 when I'm requesting a bitsize of 0.Solution
func ParseInt(s string, base int, bitSize int) (i int64, err error)ParseInt always returns int64.bitSize defines the range of values.If the value corresponding to s cannot be represented by a signed integer of the given size, err.Err = ErrRange.
http://golang.org/pkg/strconv/#ParseInt
type int intint is a signed integer type that is at least 32 bits in size. It is a distinct type, however, and not an alias for, say, int32.
http://golang.org/pkg/builtin/#int
So
int could be bigger than 32 bit in the future or on some systems like int in C.I guess on some systems
int64 might be faster than int32 because that system only works with 64-bit integers.Here is an example of an error when
bitSize is 8:http://play.golang.org/p/_osjMqL6Nj
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.ParseInt("123456", 10, 8)
fmt.Println(i, err)
}Code Snippets
func ParseInt(s string, base int, bitSize int) (i int64, err error)type int intpackage main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.ParseInt("123456", 10, 8)
fmt.Println(i, err)
}Context
Stack Overflow Q#21491488, score: 78
Revisions (0)
No revisions yet.