Golang相当于Python的NotImplementedException

时间:2016-12-14 16:11:27

标签: python oop go error-handling idiomatic

当您使用您不想实现的方法定义接口时,Golang中是否存在等效于在Python中引发NotImplementedException的内容?这是一个惯用的Golang吗?

例如:

type MyInterface interface {
    Method1() bool
    Method2() bool
}


// Implement this interface
type Thing struct {}
func (t *Thing) Method1() bool {
    return true
}

func (t *Thing) Method2() bool {
    // I don't want to implement this yet
}

5 个答案:

答案 0 :(得分:2)

通常在golang中如果要实现错误处理,则返回错误

type MyInterface interface {
    Method1() bool
    Method2() (bool, error)
}

然后您可以返回错误。 你也可以记录或恐慌@coredump在评论中说。

答案 1 :(得分:1)

这是 Go 中的一种常见模式,如果失败,您将返回结果或错误。

npm i react-native-multiple-select

答案 2 :(得分:0)

空var将执行此操作

SELECT a.itemsid,a.category,a.condition,a.description,a.name,a.seek,a.picture,a.conditionS,a.categoryS,a.studentid 
FROM items a 
INNER JOIN items b 
ON a.name = b.seek 
AND b.name = a.seek
WHERE a.name ='database' and b.name='java'
                

如果var _ MyInterface = &Thing{} 未实现接口Thing,则编译将失败

答案 3 :(得分:0)

以下是我在Go中实现gRPC生成的示例:

import (
    status "google.golang.org/grpc/status"
)

// . . .

// UnimplementedInstanceControlServer can be embedded to have forward compatible implementations.
type UnimplementedInstanceControlServer struct {
}

func (*UnimplementedInstanceControlServer) HealthCheck(ctx context.Context, req *empty.Empty) (*HealthCheckResult, error) {
    return nil, status.Errorf(codes.Unimplemented, "method HealthCheck not implemented")
}

或者,您可以在方法内部记录错误,然后返回nil以满足方法协定。

答案 4 :(得分:0)

func someFunc() {
   panic("someFunc not implemented")
}