为了账号安全,请及时绑定邮箱和手机立即绑定

无法切片 r.route(类型 *[]Route)

无法切片 r.route(类型 *[]Route)

Go
杨魅力 2022-05-05 17:59:16
我有以下代码: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)我究竟做错了什么?
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

r.route是指向切片的指针,而不是切片。(*r.route)是一个切片,所以你必须:


(*r.route)[i:]

你确定你需要一个指向该结构中切片的指针吗?这几乎总是不必要的。切片已经包含指向底层数组的指针。它没有数据,它是指向数据的指针,以及用于定义其视图的附加信息。


简单定义:


type routeVerifier struct {

    route []Route

}

checkUriDuplication可以定义为采用[]Route.


查看完整回答
反对 回复 2022-05-05
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号