Задать вопрос
Все статьи / Хостинг / Скрипты / Скрипты - другие статьи / Конвертация типов данных в Go
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Конвертация типов данных в Go

Статическая типизация служит защитой от ошибок, когда программа ожидает один тип данных, а получает другой. Однако жесткая привязка может ограничивать выполнение определенных операций.

Для преодоления этого ограничения в Go предусмотрено преобразование типов данных, или конвертация данных. Это формализованная процедура, которая позволяет разработчикам преобразовывать целочисленные значения в числа с плавающей точкой, строки в числа и наоборот. Эта статья поможет вам разобраться в том, как это делается.

Однако перед тем, как мы рассмотрим процесс конвертации типов данных, давайте рассмотрим, какие типы данных есть в Go.

Типы данных Go

В Go существует несколько основных типов данных. Вот некоторые из них:

Тип

Описание

Пример

int (integer)

Целочисленный тип данных, который предназначен для хранения целых чисел. Он может хранить как положительные, так и отрицательные значения, включая ноль.

var x int = 5

uint

Представляет собой беззнаковый целочисленный тип данных. Он может хранить только положительные целые числа и ноль.

var y uint = 10

uintptr

Целочисленный тип данных, который используется для представления беззнакового целого числа достаточного размера для хранения указателей в памяти.

var ptr uintptr

    value := 42

    ptr = uintptr(unsafe.Pointer(&value))

float (float32, float64)

Тип данных с плавающей точкой. Используется для представления чисел с плавающей точкой.

var y float64 = 3.14

string

Строковый тип данных, который предназначен для хранения последовательности символов (строк).

var str string = "Hello, World!

bool

Логический тип данных, который может принимать значения true или false.

var isTrue bool = true

byte

Тип данных, который предназначен для хранения байтов. Идентичен uint8.

var b byte = 'A'

rune

Тип данных, который предназначен для хранения символов Unicode. Идентичен int32.

var r rune = 'C'

array

Статический массив фиксированного размера, содержащий элементы одного типа.

var arr [3]int = [3]int{1, 2, 3}

slice

Динамический массив, который может изменять свой размер.

var s []int = []int{1, 2, 3}

map

Коллекция пары «ключ-значение», предназначенная для эффективного поиска по ключу.

var m map[string]int = map[string]int{"one": 1, "two": 2}

struct

Пользовательский тип данных, объединяющий различные типы данных под одной структурой.

type Person struct {

  Name string

  Age  int

}

pointer

Тип данных, который содержит адрес в памяти другого значения.

var x int = 42

var ptr *int = &x

interface

Абстрактный тип данных, представляющий собой набор методов. Реализуется неявно.

type Shape interface {

  Area() float64

}

channel

Тип данных для обмена данными между горутинами.

ch := make(chan int)

go func() {

  ch <- 42

}()

value := <-ch

Это основные типы данных в Go. Каждый из них предназначен для решения определенных задач и имеет свои уникальные свойства и применения в программировании. Разработчики могут создавать собственные типы данных с использованием структур и интерфейсов.

Типы данных «int», «uint» и «uintptr» в Go имеют ширину в 32 бита на 32-битных системах и 64 бита на 64-битных системах. Когда вам нужно использовать целочисленное значение, мы рекомендуем использовать «int», если нет конкретной причины выбирать размерный или беззнаковый целочисленный тип.

В Go отсутствует отдельный тип данных «char». Вместо него для представления символов используются «byte» и «rune». Тип «byte» используется для представления символов ASCII, а тип «rune» – для более широкого набора символов Unicode, закодированных в формате UTF-8.

Для определения символов в Go используются одинарные кавычки, например: 'a'. По умолчанию типом данных для символьных значений является «rune».

Если тип не указан явно при объявлении переменной с символьным значением, язык Go автоматически определит тип как «rune»:

var firstLetter = 'A'

Вы также можете явно указать тип переменной «byte»:

var lastLetter byte = 'Z'

Оба типа, – и «byte», и «rune», – это целые числа. Например, «byte» с символом 'X' преобразуется в целое число 88. Аналогично, «rune» с символом Unicode '★' преобразуется в соответствующую кодовую точку Юникода U+2605. Здесь U+ обозначает Юникод, а числа представлены в шестнадцатеричной системе, что, по сути, и есть целые числа.

package main

import "fmt"

func main() {
    var myByte byte = 'X'
    var myRune rune = '★'
    fmt.Printf("%c = %d and %c = U+%04X\n", myByte, myByte, myRune, myRune)
}


Вывод:

х = 88 and ★= U+2605

Когда вам требуется выполнить преобразование между типами данных «int» и «string» в языке программирования Go (Golang), значит, вам необходимо изменить тип переменной с одного на другой. Преобразование числа в строку или строки в число подразумевает взятие изначально заданного типа переменной и приведение его к другому типу.

Важно! В Go эти операции строго формализованы и требуют явного указания типа.

Приведенные в статье примеры помогут вам освоить основы таких преобразований и объяснят, как выполнять эти операции в рамках синтаксиса Go.

Преобразование чисел

В языке программирования Go преобразование чисел – это операция изменения значения переменной из одного числового типа в другой.

Преобразование (или конвертирование) необходима, например, когда вы хотите выполнить операции между значениями разных типов или когда требуется совместное использование переменных различных типов в выражениях.

Вот несколько примеров преобразования чисел:

  1. Изменение типа целого числа в число с плавающей точкой:

package main

import "fmt"

func main() {
    var integerNumber int = 77
    var floatNumber float64 = float64(integerNumber)

   fmt.Printf("Integer: %d, Float: %f\n", integerNumber, floatNumber)
}

Вывод:

Integer: 77, Float: 77.000000

  1. Преобразоание числа с плавающей точкой в целое число:

package main

import "fmt"

func main() {
    var floatNumber float64 = 73.8
    var integerNumber int = int(floatNumber)

fmt.Printf("Float: %f, Integer: %d\n", floatNumber, integerNumber)
}

Вывод:

Float: 73.800000, Integer: 73

  1. Преобразование числа в строку и наоборот:

package main

import (
    "fmt"
    "strconv"
)
func main() {
    // Число в строку
    numberAsString := strconv.Itoa(42)
    fmt.Printf("Number as string: %s\n", numberAsString)

 // Строка в число
    stringNumber := "123"
    number, err := strconv.Atoi(stringNumber)
    if err == nil {
        fmt.Printf("String as number: %d\n", number)
    } else {
        fmt.Println("Error converting string to number")
    }
}

Вывод:

Number as string: 42
String as number: 123

  1. Преобразование числа с помощью метода «strconv.Itoa». 

В Go можно преобразовывать числа в строки с использованием метода «strconv.Itoa», который входит в состав стандартной библиотеки языка в пакете «strconv».

Пример кода:

package main

import (
         "fmt"
         "strconv"
)

func main() {
         a := strconv.Itoa(99)
         fmt.Printf("%q\n", a)
}

Результат выполнения этого кода – строка "99". Кавычки в выводе указывают на то, что это уже не число:

Вы воспользовались оператором `:=` для объявления новой переменной с именем `a` и присвоения ей значения, возвращаемого функцией «strconv.Itoa()». Так, вы установили значение переменной `a` в «99». Кроме того, вы использовали `%q` в функции «fmt.Printf», чтобы функция процитировала предоставленную строку.

Используя переменные, вы поймете удобство преобразования целых чисел в строки. Допустим, вы хотите отслеживать ежедневный прогресс пользователя в программировании и фиксировать, сколько строк кода он написал на данный момент.

На практике такие преобразования часто применяются для отображения полезной информации пользователям. Например, при разработке интернет-магазина, где пользователи могут видеть свои расходы.

Однако, если вам нужно объединить строки и числа, то в Go необходимо явно конвертировать числовые значения в строки, чтобы избежать ошибок.

Например:

package main

import (
         "fmt"
         "strconv"
)

func main() {
         user := "Анна"
         sum := 150
         fmt.Println("Вау! " + user + "! Вы потратили на нашей платформе уже " + strconv.Itoa(sum) + " рублей.")
}

Вывод:

Вау! Анна! Вы потратили на нашей платформе уже 150 рублей.

Здесь преобразование переменной «sum» в строку выполняется с помощью «strconv.Itoa», что позволяет избежать ошибок при связывании строки и числа.

Если нужно отобразить точную сумму с дробной частью, то лучше использовать метод «fmt.Sprint» для преобразования числа с плавающей точкой в строку.

Например:

package main

import "fmt"

func main() {
         f := 789.12
         fmt.Println("Анна потратила " + fmt.Sprint(f) + " рублей.")
}

Теперь программа сообщит, что «Анна потратила 789.12 рублей»:

  1. Преобразование чисел с помощью деления

В Go при делении целочисленных типов результат также будет представлен целым числом, и любая десятичная часть, или остаток, будет отброшена:

package main

import "fmt"

func main() {
    a := 10 / 3
    fmt.Println(a)
}

Вывод:

3

Здесь переменная `a` содержит результат деления 10 на 3, и так как это целочисленное деление, остается только целая часть, то есть 3.

Если при делении мы используем числовые типы с плавающей точкой, тогда и все остальные операнды будут автоматически преобразованы в числа с плавающей точкой:

package main

import "fmt"

func main() {
    b := 7.5 / 2
    fmt.Println(b)
}

Вывод:

3.75      

В этом случае число с плавающей точкой 7.5 делится на целое число 2.  Результат «3.75» представляет собой число с плавающей точкой, которое сохраняет десятичную часть деления.

Таким образом, мы видим, что при делении с использованием числовых типов в Go результат зависит от типов операндов. Более того, приведение типов для чисел с плавающей точкой происходит автоматически, если один из операндов такой же.

  1. Преобразование строк и байтов

Строки в языке программирования Go хранятся в виде срезов байтов. В Go можно осуществлять преобразование между строками и срезами байтов, используя соответствующие преобразования «[]byte()» и «string()»:

package main

import (
         "fmt"
)

func main() {
         originalString := "Моя строка"

         byteSlice := []byte(originalString)

         convertedString := string(byteSlice)

         fmt.Println(originalString)

         fmt.Println(byteSlice)

         fmt.Println(convertedString)
}

Здесь строковое значение сохранено в переменной «originalString», затем оно преобразовано в срез байтов «byteSlice», и после этого срез байтов успешно восстановлен в строку под именем «convertedString». Затем выводятся значения «originalString», «byteSlice» и «convertedString»:

Моя строка
[208 188 208 186 209 130 208 176 32 209 129 209 130 208 176]
Моя строка

Где:

  • Первая строка вывода представляет собой исходную строку «Моя строка».
  • Вторая строка вывода – это срез байтов, из которых состоит исходная строка.
  • Третья строка демонстрирует, что срез байтов может быть успешно преобразован обратно в строку и выведен на экран.

Такие базовые операции помогают избежать ошибок при работе с данными в Go.

Заключение

В этом руководстве по Go мы продемонстрировали, как осуществить преобразование различных типов данных.

Возможность преобразовывать типы данных в Go предоставляет функциональность для выполнения различных операций: например, для обработки ввода пользователя и выполнения математических операций с различными числовыми типами.

В будущем, при написании программ на Go, которые взаимодействуют с данными из разных источников, вы сможете применять эти методы преобразования для корректного выполнения операций с вашими данными.

Предыдущая статья
Как создать bat файл
Следующая статья
.htaccess