关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
2年前关闭。
Improve this question
我有以下代码:
type routeVerifier struct {
route *[]Route
}
func (r *routeVerifier) checkUriDuplication(comparer *[]Route, uri string) error {
for _, e := range *comparer {
if e.Uri == uri {
msg := fmt.Sprintf("The uri %s already exist", uri)
return errors.New(msg)
}
}
return nil
}
func (r *routeVerifier) validate() routesErrorLogger {
errors := routesErrorLogger{}
for i, e := range *r.route {
error := newRouteErrorLogger(e.Uri)
if err := r.checkUri(e.Uri); err != nil {
error.add(err)
}
if err := r.checkUriDuplication(r.route[i:], e.Uri); err != nil {
error.add(err)
}
mv := newMethodsVerifier(&e.Methods)
if err := mv.validate(); len(err) > 0 {
}
}
}
编译器提示:
descriptor/route_verifier.go:55:42: cannot slice r.route (type *[]Route)
我究竟做错了什么?
最佳答案
r.route
是指向 slice 的指针,而不是 slice 。 (*r.route)
是一个 slice ,所以你必须:
(*r.route)[i:]
你确定你需要一个指向该结构中 slice 的指针吗?这几乎总是不必要的。 slice 已经包含指向底层数组的指针。它没有数据,它是指向数据的指针,以及用于定义其 View 的附加信息。
简单定义:
type routeVerifier struct {
route []Route
}
checkUriDuplication
可以定义取一个[]Route
.
关于go - 不能对 r.route 进行 slice (输入 *[]Route),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804389/