как выполнить приведение между двумя пользовательскими типами

#go

# #Вперед

Вопрос:

Предположим, у меня есть два файла.

привет.go

 package main


type StringA string


func main() {

    var s StringA
    s = "hello"
    s0 := s.(StringB) <---- somehow cast my StringA to StringB. After all, they are both strings
    s0.Greetings()

}
 

пока.go

 package main

import "fmt"

type StringB string



func (s StringB) Greetings(){

    fmt.Println(s)

}
 

И скомпилируйте это следующим образом:

 go build hello.go bye.go
 

Как мне выполнить приведение StringA к типу StringB ?

Спасибо

Ответ №1:

Вы можете использовать способ s0 := StringB(s) , которым на других языках является конструктор, но вот просто другой способ создания совместимых типов, например []byte("abc")

Ваш код может выглядеть следующим образом:

 type StringA string

type StringB string

func (s StringB) Greetings(){
    fmt.Println(s)

}

func main() {
    var s StringA
    s = "hello"
    s0 := StringB(s)
    s0.Greetings()
}
 

полный пример: https://play.golang.org/p/rMzW5FfjSE