Подтвердить что ты не робот

Преобразование строки Golang в int64

Я хочу преобразовать строку в int64. То, что я нахожу в пакете strconv, - это функция Atoi. Кажется, он передал строку int и вернул ее:

// Atoi is shorthand for ParseInt(s, 10, 0).
func Atoi(s string) (i int, err error) {
        i64, err := ParseInt(s, 10, 0)
    return int(i64), err
}

ParseInt фактически возвращает int64:

func ParseInt(s string, base int, bitSize int) (i int64, err error){
     //...
}

Итак, если я хочу получить int64 из строки, следует ли мне избегать использования Atoi, а вместо этого использовать ParseInt? Или есть где-то скрытый Atio64?

4b9b3361

Ответ 1

Нет, нет Atoi64. Вы также должны передать 64 в качестве последнего параметра в ParseInt, или это может не привести к ожидаемому значению в 32-разрядной системе.

Ответ 2

Разбор строки в примере int64:

// Use the max value for signed 64 integer. http://golang.org/pkg/builtin/#int64
var s string = "9223372036854775807"
i, err := strconv.ParseInt(s, 10, 64)
if err != nil {
    panic(err)
}
fmt.Printf("Hello, %v with type %s!\n", i, reflect.TypeOf(i))

вывод:

Здравствуйте, 9223372036854775807 с типом int64!

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