这里NewServer(s),s是storage.Storage的实现,但是报错,加上&就不报错了
但是这个方法参数不是指针啊
1 个赞
没太看懂描述。。。你的“&”是加在哪里后不报错的?
1 个赞
就是箭头指的那个s,默认没有但是报错
1 个赞
那个参数是interface,你是storage*实现了那个interface,不是storage
1 个赞
当然得看你的NewStandAloneStorage返回值有没有改动了
1 个赞
s 是 NewStandAloneStorage
的实现,返回的是一个指针。
可能是还没有实现这个函数,s 没有获得相应的指针,获得的是一个 nil
。而如果加了&,NewServer
中的参数 storage
就有值了,这才没有了报错。
所以我觉得解决方案是你实现一下这个函数,或者是之前实现的有问题要改一下。记得返回一个 &StandAloneStorage
类型的就 ok 了。
1 个赞
说明你的 Standalone Storage 没有完全实现 Storage 接口的方法,检查下是否漏掉了。
如果全部实现了的话,这里是不可能报错的。
已经实现了,goland可以显示
但是我这里返回的不是指针,那边的参数也不是指针,但是给s加上&s才不会报错
@DataKu @roseduan_KV-Killer @LimingFang_杰尼龟铁憨憨
1 个赞
哦,那应该是 NewStandaloneStorage 这个方法应该返回指针。
这里默认就是这样的。
你要不去看一下你的函数是不是最新的文件
https://github.com/tidb-incubator/tinykv/blob/98138e859e71ed8aad6cb990f7095e2efeb3ba67/kv/storage/standalone_storage/standalone_storage.go#L15
1 个赞
哦哦好我看看
Storage 是个 interface 类型,这种类型做为参数时,其实现必须传指针。
1 个赞
哦哦懂了,感谢,查到了,实现如果有指针接收者就必须传指针
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。