当前位置: 首页 > 知识库问答 >
问题:

go - 我们在写Go代码的时候,我们是否约定俗成就是定义返回带有*的返回结果?

周朗
2024-01-13

我们在写Go代码的时候,我们是否约定俗成就是定义返回带有*的返回结果?
例如:*router.GeoIP

func getLocalIPs() *router.GeoIP {    cidr := make([]*router.CIDR, 0, 16)    for _, ip := range localIPs {        c, err := conf.ParseIP(ip)        common.Must(err)        cidr = append(cidr, c)    }    return &router.GeoIP{        CountryCode: "PRIVATE",        Cidr:        cidr,    }}

共有1个答案

奚瑾瑜
2024-01-13

在Go语言中,并没有约定俗成地使用""作为返回结果的标记。在Go中,""用于表示指针类型,但它并不强制要求使用指针类型作为函数的返回值。是否使用指针类型作为返回值取决于函数的实现和设计需求。

在你提供的示例中,getLocalIPs函数返回了一个*router.GeoIP类型的指针。这是因为在Go中,如果一个函数返回一个结构体类型,通常会使用指针类型来避免在函数调用过程中复制整个结构体,从而提高性能。通过返回指针类型,函数可以返回指向结构体的引用,而不是复制整个结构体。

然而,这并不是Go语言的强制规定或约定俗成的做法。函数的返回类型取决于函数的实现和设计需求。如果一个函数不需要返回指向结构体的引用,或者复制结构体的开销很小,那么可以使用非指针类型作为返回值。

总结来说,Go语言没有约定俗成地使用"*"作为返回结果的标记。使用指针类型作为返回值取决于函数的实现和设计需求。

 类似资料:
  • 在Go语言中有flag.String()函数,请问下: 1、flag.String()返回的是什么呢? 为何需要这样来返回? 2、countryCodeFile 不是一个字符串吗?

  • 改变json输出策略 默认使用阿里的fastjson进行json输出 JSON.toJSONString(obj) 如果要更换输出策略,操作方式如下: @Override protected void initApiConfig(ApiConfig apiConfig) { ... // 自定义json格式输出,将null字符串变成"" apiConfig.setJson

  • 网关默认对业务结果进行合并,然后返回统一的格式。 针对alipay.story.find接口,微服务端返回结果如下: { "name": "白雪公主", "id": 1, "gmtCreate": 1554193987378 } 网关合并后,最终结果如下 { "alipay_story_find_response": { "msg": "Succe

  • 问题内容: 如果我运行查询,例如: 即使查询与任何记录都不匹配,它也会始终返回结果吗?还是我需要验证并确保结果返回一行? 问题答案: 是的,因为它是一个聚合并且返回零。除非您添加GROUP BY,否则由于没有组,因此没有结果… 除非您添加GROUP BY,然后没有任何行,否则MAX / SUM等将返回NULL。只有COUNT传回没有结果的数字 编辑,有点晚:SUM会像MAX一样返回NULL 编辑,

  • 因此,作为家庭作业,我的任务是编写包含5种静态方法的代码。其中两人要求提供以下内容: “编写一个以整数X为参数的方法,如果X为偶数,则返回true;如果X为奇数,则返回false。” 和 “编写一个以正整数N为参数的方法,如果N是素数,则返回true,否则返回false。假设N 我不清楚我是否需要打印出正确或错误的方法。在我将println添加到方法调用之前,它们显然没有打印。所以我想我有两个问题

  • 问题内容: 函数内部的这两个语句之间有区别吗? 还有这个? 前者周围有括号。 问题答案: 从C 14开始,它们经常是。C 14增加了一种边缘情况,其中返回值周围的括号可能会改变语义。此代码段显示了要声明的两个函数。唯一的区别是在返回值两边加上括号。 在第一个中func1返回int,在第二个中func1返回int&。语义上的差异与周围的括号直接相关。 autoC 11中引入了最新形式的说明符。在C