go - 不能对 r.route 进行 slice (输入 *[]Route)

标签 go

关闭。这个问题是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/

相关文章:

go - golang中如何实现虚函数?

go - 在 Golang 中获取公共(public) IP

python - Cloudflare KV API批量PUT-错误10012-无法将KVPair解码为中间结构

json - Go 能够解码为 map[string][]interface{} 吗?

去眼镜蛇 : space separated values in StringArray flags

go - 导入 `github.com/influxdb/influxdb/client/v2` 包时缺少符号

go/types.Identical 不能比较其他包中的两个相同类型?

go - Go 中来自客户端和服务器的 RPC

go - 在golang中连接2个 slice

go - 从 net.UDPConn 读取会锁定 PC