Преобразование именованных типов
В Go именованные типы (например, тип MyInt, объявленный как type MyInt int) не являются взаимозаменяемыми со своим базовым типом, даже если их структура совпадает. Для преобразования между ними используется синтаксис явного приведения: имя типа используется как функция, принимающая значение базового типа.
В результате получается значение нового именованного типа с тем же содержимым.
Синтаксис
MyType(value)
Пример
Преобразуем значение базового типа int в именованный тип MyInt:
package main
import "fmt"
type MyInt int
func main() {
var base int = 42
var named MyInt = MyInt(base)
fmt.Println(base)
fmt.Println(named)
}
Результат выполнения кода:
42
42
Пример
Преобразование в обратную сторону — из именованного типа в базовый:
package main
import "fmt"
type MyString string
func main() {
var named MyString = "abcde"
var base string = string(named)
fmt.Println(named)
fmt.Println(base)
}
Результат выполнения кода:
"abcde"
"abcde"
Пример
Преобразование между двумя разными именованными типами с одинаковым базовым типом выполняется через промежуточное приведение к базовому типу:
package main
import "fmt"
type FirstInt int
type SecondInt int
func main() {
var first FirstInt = 100
var second SecondInt = SecondInt(first)
fmt.Println(first)
fmt.Println(second)
}
Результат выполнения кода:
100
100
Смотрите также
-
приведение к
неявным типам,
которое происходит автоматически для совместимых типов -
операцию
преобразования указателей,
которая используется для работы с адресами памяти -
функцию
to-int64,
которая преобразует значение к 64-битному целому числу -
функцию
to-float64,
которая преобразует значение к 64-битному числу с плавающей точкой