猿问

client-go 中的 golang 语法

有人可以帮助我理解这些代码吗?


在client-go项目中,有一些代码我无法理解。代码路径为\tols\cache\store.go


    Add(obj interface{}) error

    Update(obj interface{}) error

    Delete(obj interface{}) error

    List() []interface{}

    ListKeys() []string

    Get(obj interface{}) (item interface{}, exists bool, err error)

    GetByKey(key string) (item interface{}, exists bool, err error)


    // Replace will delete the contents of the store, using instead the

    // given list. Store takes ownership of the list, you should not reference

    // it after calling this function.

    Replace([]interface{}, string) error

    Resync() error

}


type cache struct {

    // cacheStorage bears the burden of thread safety for the cache

    cacheStorage ThreadSafeStore

    // keyFunc is used to make the key for objects stored in and retrieved from items, and

    // should be deterministic.

    keyFunc KeyFunc

}


var _ Store = &cache{}

最后一行“var _ Store = &cache{}”,这是什么意思,有官方文档支持吗?


四季花海
浏览 145回答 1
1回答

慕神8447489

在golang中,如果定义了一个变量但不使用它,那么就会报错。通过使用_名称,您可以克服这个问题。我想每个人都已经_, err := doSomething()在 golang 中看到过。var _ Store = &cache{}与此没有什么不同。这里最棒的是Store一个接口,所以通过var _ Store = &cache{}这样做,它强制caches实现接口Store。如果caches不实现该接口,您的代码将无法编译。这是多么厉害的伎俩呢?
随时随地看视频慕课网APP

相关分类

Go
我要回答