如何使函数接收不同类型的字符串

时间:2019-06-05 03:50:12

标签: go

在我的代码中,我有一些字符串类型,例如:

$ tree -L 2
.
├── README.md
├── Visualization_Sarit
│   ├── BA_Read0DDataPlot1DGraph.py
│   ├── CC_ReadNew2DDataPlotLineGraph.py
│   ├── ModulesInterfaceTASK.py
│   ├── Visualization.docx
│   ├── Visualization.xlsx
│   └── inHT6Ms302
├── __init__.py
├── __pycache__
│   ├── api_urls.cpython-36.pyc
│   ├── celery_ht6m.cpython-36.pyc
│   ├── db_routers.cpython-36.pyc
│   ├── settings.cpython-36.pyc
│   ├── urls.cpython-36.pyc
│   └── wsgi.cpython-36.pyc
├── api_urls.py
├── apps
│   ├── __init__.py
│   ├── __pycache__
│   ├── advanced_cases
│   ├── commons
│   ├── control_params
│   ├── device_params
│   ├── heating_params
│   ├── plasma_params
│   ├── plasma_species
│   ├── results
│   ├── scenarios
│   └── transport_params
├── celery_ht6m.py
├── db_routers.py
├── experiments.py
├── f1
│   ├── README.md
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   └── src
├── manage.py
├── media
├── requirements.in
├── requirements.txt
├── settings.py
├── static
├── static_files
├── templates
│   ├── __init__.py
│   └── hello.html
├── urls.py
├── wsgi.py
└── zappa_settings.json

我知道我可以在阅读后将它们转换为字符串: Converting a custom type to string in Go

但是我想编写一个采用所有这类结构的函数,例如

type StringTypeOne string
type StringTYpeOwn string

其中s可以是func handleString(s StringType) StringTypeOne或任何其他具有字符串字段的类型。

在golang中有可能吗?

3 个答案:

答案 0 :(得分:4)

不,您不能。但是出于您的目的,您应该实现一个自定义界面。

// 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) {
}

此方法可以同时接收StringTypeOneStringTypeTwo作为参数。

答案 1 :(得分:2)

  

在golang中有可能吗?

否。

一种新类型的全部目的是它是一种不同类型。

答案 2 :(得分:1)

如果您确实需要此功能,则可以创建一个新的接口类型,然后为每个StringTypes实施,然后您的函数将以该接口类型的实例作为参数。