Как сделать так, чтобы функция получала другой тип в виде строки - PullRequest
0 голосов
/ 05 июня 2019

В моем коде у меня есть несколько типов строк, таких как:

type StringTypeOne string
type StringTYpeOwn string

Я знаю, что могу преобразовать их в строку после прочтения: Преобразование пользовательского типа в строку в Go

Однако я хочу написать функцию, которая принимает все эти виды структур, например,

func handleString(s StringType)

, где s может быть StringTypeOne или StringTypeTwo или любой другой тип со строковым полем.

Возможно ли это на Голанге?

Ответы [ 3 ]

4 голосов
/ 05 июня 2019

Нет, вы не можете. Но для вашей цели вы должны реализовать пользовательский интерфейс.

// define an interface that do something you need
type Doer interface {
   DoSomething();
}

Затем вы определяете пользовательский тип и реализуете все необходимые функции определенного интерфейса:

type StringTypeOne string
type StringTypeTwo string


func (s StringTypeOne) DoSomething() {
}

func (s StringTypeTwo) DoSomething() {
}

Затем вы можете создать функцию, получившую интерфейс в качестве параметра:

func handleString(s Doer) {
}

Этот метод может принимать как StringTypeOne, так и StringTypeTwo в качестве параметра.

2 голосов
/ 05 июня 2019

Возможно ли это в Голанге?

Нет.

Вся цель нового типа заключается в том, что он является другим типом.

1 голос
/ 05 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...