由于我来自Java并且是Golang的新手,我将尝试用Java解释我想要的东西.
interface Car { }
class MyCarA implements Car {
int specificToA
}
class MyCarB implements Car {
int specificToB
}
Run Code Online (Sandbox Code Playgroud)
我认为这样的界面(如Car)在Java中称为标记界面.它只是表明编译器必要的抽象.
我怎么能在Golang中这样做?
我有
type MyCarA struct {
specificToA int
}
type MyCarB struct {
specificToB int
}
Run Code Online (Sandbox Code Playgroud)
我现在如何概括这些结构?它应该是一个接口还是另一个结构?
你可以这样做:
type Car interface { IAmACar() }
type MyCarA struct {
specificToA int
}
func (MyCarA) IAmACar() {}
type MyCarB struct {
specificToB int
}
func (MyCarB) IAmACar() {}
Run Code Online (Sandbox Code Playgroud)
您使用类型断言测试标记:
_, itIsACar := v.(Car)
Run Code Online (Sandbox Code Playgroud)
Car接口也可用于静态检测错误:
var c Car
c = MyCarA{0} // ok
c = 0 // error, int is not a car
Run Code Online (Sandbox Code Playgroud)
该GO/AST包做类似的事情.请参阅文件ast.go中函数exprNode的使用.
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |