go的proto结构作为参数传递,如果改变repeated里的值?

pb大概结构体如下

message Link {
    bytes url             = 1;
};

message ExtractInfo {
    .....
    repeated Link links            = 60;
};

exInfo是一个ExtractInfo类型的指针,作为参数传进parser函数里,然后如果我想在parser函数里给exInfo里的links append值,该怎么做呢?以下代码中links := exInfo.Links取出的值是[]*link类型,所以links不是一个指针,而是一个值,函数返回后,不会改变main里面的值。

func main() {
    ...
    exInfo := &proto.ExtractInfo{}
    parser(dom, exinfo, m)
    ...
}
func parser(dom*goquery.Document, exInfo *proto.ExtractInfo, m map[string]interface{})
{
    li := &proto.Link{
       Url:    []byte(url),
    }
    links := exInfo.Links
    links = append(links, li)
}
最佳答案
func parser(dom*goquery.Document, exInfo *proto.ExtractInfo, m map[string]interface{}) {
    li := &proto.Link{
       Url:    []byte(url),
    }
    exInfo.Links= append(exInfo.Links, li)
}

你是要这样?

2年前 评论
讨论数量: 2
func parser(dom*goquery.Document, exInfo *proto.ExtractInfo, m map[string]interface{}) {
    li := &proto.Link{
       Url:    []byte(url),
    }
    exInfo.Links= append(exInfo.Links, li)
}

你是要这样?

2年前 评论
giao哥

基础得补补呀

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!