Go за Прикладом: Конвертація Тексту в Числа

Часто нам необхідно конвертувати число з рядкового значення у (десяткове або інше) число - і ось як це робити в Go.

package main

Конвертація з рядків в числа можлива завдяки пакету strconv.

import (
    "fmt"
    "strconv"
)
func main() {

64 (що ви бачите у функції ParseFloat) вказує на те, до скількох бітів точності ми будемо конвертувати це число, тобто фінальне число буде типу float64

    f, _ := strconv.ParseFloat("1.234", 64)
    fmt.Println(f)

0 в ParseInt говорить нам, що тип визначатиметься базуючись на форматі рядку, а 64 це вимога до результату поміститись у відведені 64 біти.

    i, _ := strconv.ParseInt("123", 0, 64)
    fmt.Println(i)

ParseInt може розпізнати не тільки числа десятинної системи, ось приклад шістнадцяткового числа.

    d, _ := strconv.ParseInt("0x1c8", 0, 64)
    fmt.Println(d)

Як бачимо - ParseUint також доступний.

    u, _ := strconv.ParseUint("789", 0, 64)
    fmt.Println(u)

Atoi зручно використовувати для конвертації чисел за основою 10 у цілі.

    k, _ := strconv.Atoi("135")
    fmt.Println(k)

Якщо на вхід подано “погані дані” - існує можливість перехопити помилку.

    _, e := strconv.Atoi("wat")
    fmt.Println(e)
}
$ go run number-parsing.go
1.234
123
456
789
135
strconv.ParseInt: parsing "wat": invalid syntax

Далі ми розглянемо ще один тип роботи з текстом: розбір URL на складові.

Наступний приклад: Розбір URL.