Шаг 30.
Язык программирования Go.
Примеры использования функций пакета strconv
На этом шаге рассмотрим примеры использования функций пакета strconv для работы со строками в Go.
Задание 1. Преобразовать строковое представление значения истинности в значение типа bool.
Раскрыть/скрыть решение и комментарии.
Сделать это можно с помощью функции strconv.ParseBool().
for _, truth := range []string{"1", "t", "TRUE", "false", "F", "0", "5"} {
if b, err := strconv.ParseBool(truth); err != nil {
fmt.Printf("\n{%v}", err)
} else {
fmt.Print(b, " ")
}
}
fmt.Println()
Результат работы приложения представлен на рисунке 1.
Рис.1. Результат преобразования
Архив примера можно взять здесь.
Задание 2. Перевести строку в десятичное число.
Раскрыть/скрыть решение и комментарии.
Все функции преобразования из пакета strconv возвращают результат преобразования и значение ошибки, которое равно nil, если преобразование было выполнено успешно.
x, err := strconv.ParseFloat("-99.7", 64)
fmt.Printf("%8T %6v %v\n", x, x, err)
y, err := strconv.ParseInt("71309", 10, 0)
fmt.Printf("%8T %6v %v\n", y, y, err)
z, err := strconv.Atoi("71309")
fmt.Printf("%8T %6v %v\n", z, z, err)
Результат работы приложения представлен на рисунке 2.
Рис.2. Результат перевода
Архив примера можно взять здесь.
Вызов функции strconv.Atoi(s) почти идентичен вызову функции strconv.ParseInt(s,10, 0), то есть он интерпретирует указанную строку как строковое представление целого числа в десятичной системе счисления и возвращает целое число, только функция Atoi() возвращает значение типа int, а функция ParseInt() – значение типа int64. Как можно было бы догадаться, функция strconv.ParseUint() преобразует строку в беззнаковый целочисленный тип и терпит неудачу, если строка начинается со знака "минус". Все эти функции терпят неудачу, если в начале или в конце строки имеются пробельные символы, которые, впрочем, легко удалить с помощью функции strings.TrimSpace() или функций ввода из пакета fmt. Естественно, функции преобразования в вещественные значения принимают строки, содержащие числа в стандартном или экспоненциальном представлении, такие как "984", "424.019" и "3.916e-12".
Задание 3. Преобразовать в десятичное число строки, представляющие запись двоичного, восьмеричного и шестнадцатеричного числа.
Раскрыть/скрыть решение и комментарии.
z, err := strconv.Atoi("71")
s := strconv.FormatBool(z > 100)
fmt.Println(s)
i, err := strconv.ParseInt("0xFF", 0, 32)
fmt.Println(i, err)
j, err := strconv.ParseInt("070", 0, 32)
fmt.Println(j, err)
k, err := strconv.ParseInt("10101010", 2, 32)
fmt.Println(k, err)
Результат работы приложения представлен на рисунке 3.
Рис.3. Результат перевода
Архив примера можно взять здесь.
Функция strconv.FormatBool() возвращает строковое представление указанного логического выражения в виде строки "true" или "false". Функция strconv.ParseInt() преобразует строковое преставление целого числа в значение типа int64. Во втором параметре функции передается основание системы счисления, где значение 0 означает, что основание системы счисления будет определено автоматически по первым символам в строке: "0x" или "0X" – шестнадцатеричная система счисления, "0" – восьмеричная, и во всех остальных случаях – десятичная. В этом фрагменте было выполнено преобразование шестнадцатеричного и восьмеричного чисел с автоматическим определением основания системы счисления, и двоичного числа с явно указанным значением 2 в аргументе base. Допустимыми значениями аргумента base являются значения в диапазоне от 2 до 36 включительно, где в основаниях выше 10 десятка представляется как A (или a), и т. д. Третий аргумент определяет размер результата в битах (0 означает тип int), поэтому, несмотря на то что функция всегда возвращает значение типа int64, преобразование будет успешным, только если полученное значение может быть преобразовано в целочисленный тип указанного размера.
Задание 4. Ппреобразовать числовой тип в строковый, с переводом в двоичную и шестнадцатеричную системы счисления.
Раскрыть/скрыть решение и комментарии.
i := 16769023
fmt.Println(strconv.Itoa(i))
fmt.Println(strconv.FormatInt(int64(i), 10))
fmt.Println(strconv.FormatInt(int64(i), 2))
fmt.Println(strconv.FormatInt(int64(i), 16))
Результат работы приложения представлен на рисунке 4.
Рис.4. Результат преобразования
Архив примера можно взять здесь.
Функция strconv.Itoa() ("Integer to ASCII" – "целое в ASCII") возвращает строковое представление аргумента типа int в системе счисления по основанию 10. Функция strconv.FormatInt() возвращает строковое представление аргумента типа int64 в системе счисления с указанным основанием (которое обязательно должно быть указано и находиться в диапазоне от 2 до 36 включительно).
На следующем шаге рассмотрим функции пакета utf8.
Предыдущий шаг
Содержание
Следующий шаг