在我的代码中,我有一些字符串类型,例如:
$ 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中有可能吗?
答案 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) {
}
此方法可以同时接收StringTypeOne
或StringTypeTwo
作为参数。
答案 1 :(得分:2)
在golang中有可能吗?
否。
一种新类型的全部目的是它是一种不同类型。
答案 2 :(得分:1)
如果您确实需要此功能,则可以创建一个新的接口类型,然后为每个StringTypes实施,然后您的函数将以该接口类型的实例作为参数。