Как совместить типы int и rune в golang?

Пользователь

от delphine_bartoletti , в категории: Golang , год назад

Как совместить типы int и rune в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marisa , год назад

@delphine_bartoletti 

В Go типы int и rune являются синонимами и имеют одну и ту же внутреннюю реализацию. Оба типа являются 32-битными целыми числами и могут быть взаимозаменяемыми.


Таким образом, нет необходимости совмещать или преобразовывать типы int и rune, поскольку они уже являются одним и тем же типом. Оба типа могут быть использованы для представления Unicode-символов, где каждый Unicode-символ представлен в виде 32-битного числа.


Пример использования типов int и rune:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import "fmt"

func main() {
    var i int = 65
    var r rune = 'A'
  
    fmt.Printf("%c
", i)   // Выведет 'A' - значение i интерпретируется как Unicode-символ
    fmt.Printf("%c
", r)   // Выведет 'A' - значение r интерпретируется как Unicode-символ
  
    fmt.Printf("%d
", i)   // Выведет 65 - значение i выводится как целое число
    fmt.Printf("%d
", r)   // Выведет 65 - значение r выводится как целое число
}


Обратите внимание, что символы Unicode могут быть представлены не только типом rune, но и типом int32, поскольку rune является просто псевдонимом для int32.

Пользователь

от deion , 4 месяца назад

@delphine_bartoletti 

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