Go语言编程需要注意的点

代码规范

go import分组应该按照这样的顺序导入:
(1)标准库模块
(2)当前项目模块
(3)第三方模块
每部分按照换行隔开
if err := c.getPodReadyStatus(pod); err == nil {
continue
}

在编程过程中,我们需要关注两点:1return fast
(2)avoid too many depth
  1. 当设计一个新的包时,新手Go程序员总是先创建一套接口,然后再定义一些满足它们的具体类型。这种方式的结果就是有很多的接口,它们中的每一个仅只有一个实现。不要再这么做了。这种接口是不必要的抽象;它们也有一个运行时损耗。你可以使用导出机制来限制一个类型的方法或一个结构体的字段是否在包外可见。接口只有当有两个或两个以上的具体类型必须以相同的方式进行处理时才需要
  2. 类型chan<- int表示一个只发送int的channel,只能发送不能接收。相反,类型<-chan int表示一个只接收int的channel,只能接收不能发送。(箭头<-和关键字chan的相对位置表明了channel的方向。)这种限制将在编译期检测。不能将一个类似chan<- int类型的单向型的channel转换为chan int类型的双向型的channel

Sort函数

  1. c++的sort排序和go的sort.Slice排序的区别:
sort(id.begin(),id.end(),[&](int x,int y){
            return values[x]>values[y];
        });
sort.Slice(ids,func(i,j int) bool {
        return values[ids[i]]>values[ids[j]]
    })

为什么go需要用return values[ids[i]]>values[ids[j]]而c++只要用return values[x]>values[y];?

c++ sort和go sort的区别。Slice主要是由于他们处理比较函数的方式。在c++中,比较函数接受两个元素作为参数,并返回指示它们顺序的布尔值。在go中,比较函数接受切片的两个索引,并返回一个布尔值,表示这些索引处元素的顺序。这意味着在go中,您需要使用索引访问比较函数中的切片元素,而在c++中,您可以直接比较作为参数传递的元素。根据网络搜索结果,另一个不同之处在于c++排序对大的切片使用快速排序算法,这是不稳定的,这意味着它不会保持相等元素的原始顺序。去排序。Slice使用的是introsort算法,这种算法也不稳定,但是go也提供了排序。函数,它使用稳定的归并排序算法。一个稳定的排序算法维护具有相等键(即值)的记录的相对顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值