Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang命名规范和开发规范

Golang命名规范和开发规范

作者头像
rectinajh
发布于 2019-12-20 02:45:36
发布于 2019-12-20 02:45:36
7.1K00
代码可运行
举报
运行总次数:0
代码可运行

----目录----

命名

文件命名

文件命名一律采用小写,不用驼峰式,尽量见名思义,看见文件名就可以知道这个文件下的大概内容。 其中测试文件以test.go结尾,除测试文件外,命名不出现

例子:

stringutil.go, stringutil_test.go

包名package

包名用小写,使用短命名,尽量和标准库不要冲突。 包名统一使用单数形式。

变量

变量命名一般采用驼峰式,当遇到特有名词(缩写或简称,如DNS)的时候,特有名词根据是否私有全部大写或小写。

例子:

apiClient、URLString

常量

同变量规则,力求语义表达完整清楚,不要嫌名字长。 如果模块复杂,为避免混淆,可按功能统一定义在package下的一个文件中。

接口

单个函数的接口名以 er 为后缀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type Reader interface {
    Read(p []byte) (n int, err error)
}

两个函数的接口名综合两个函数名,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type WriteFlusher interface {
    Write([]byte) (int, error)
    Flush() error
}

三个以上函数的接口名类似于结构体名,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type Car interface {
    Start() 
    Stop()
    Drive()
}

结构体

结构体名应该是名词或名词短语,如Account,Book,避免使用Manager这样的。 如果该数据结构需要序列化,如json, 则首字母大写, 包括里面的字段。

方法

方法名应该是动词或动词短语,采用驼峰式。将功能及必要的参数体现在名字中, 不要嫌长, 如updateById,getUserInfo.

如果是结构体方法,那么 Receiver 的名称应该缩写,一般使用一个或者两个字符作为 Receiver 的名称。如果 Receiver 是指针, 那么统一使用p。 如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (f foo) method() {
    ...
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (p *foo) method() {
    ...
}

对于Receiver命名应该统一, 要么都使用值, 要么都用指针。

注释

每个包都应该有一个包注释,位于 package 之前。如果同一个包有多个文件,只需要在一个文件中编写即可;如果你想在每个文件中的头部加上注释,需要在版权注释和 Package前面加一个空行,否则版权注释会作为Package的注释。如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net

每个以大写字母开头(即可以导出)的方法应该有注释,且以该函数名开头。如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Get 会响应对应路由转发过来的 get 请求
func (c *Controller) Get() {
    ...
}

大写字母开头的方法以为着是可供调用的公共方法,如果你的方法想只在本包内掉用,请以小写字母开发。如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func (c *Controller) curl() {
    ...
}

注释应该用一个完整的句子,注释的第一个单词应该是要注释的指示符,以便在 godoc 中容易查找。

注释应该以一个句点 . 结束。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。
  字节按位反转算法,在有些算法加密或者一些特殊的场合有着较为重要的应用,其速度也是一个非常关键的应用,比如一个byte变量a = 3,其二进制表示为00000011,进行按位反转后的结果即为11000000,即十进制的192。还有一种常用的应用是int型变量按位反转,其基本的原理和字节反转类似,本文仅以字节反转为例来比较这个算法的实现。
用户1138785
2020/01/02
1.3K0
H264/H265 NALU 起始码搜索性能优化(1)
在ffmpeg中,在进行h264 rbsp流demux的时候,需要进行starting code的搜索,其采用的方法比较简单,就是不断比较字节流中连续的三个字节,是不是 0x00, 0x00, 0x01,ffmpeg采用如下代码用来找到各个NALU的分界点:
码农心语
2024/04/09
1260
H264/H265 NALU 起始码搜索性能优化(1)
【AI PC端算法优化】三,深入优化RGB转灰度图算法
前几天发了一篇一步步优化RGB转灰度图算法,但实验做的并不完善,在上次的基础上我又补充了一些优化技巧,相对于传统实现将RGB转灰度图算法可以加速到近5倍左右。所以,这篇文章再次将所有涉及到的优化方法进行汇总,SSE优化相关的原理上一节已经讲得很清楚了,这里就不会再展开了,感兴趣可以查看上篇文章。【AI PC端算法优化】一,一步步优化RGB转灰度图算法 这一节的速度测试环境为:
BBuf
2020/04/15
1.2K0
SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。
该文章是一篇关于Linux、Windows和macOS操作系统之间区别的文章。文章主要介绍了Linux、Windows和macOS这三种操作系统在桌面环境、图形界面、文件系统、系统管理、软件安装、系统性能、安全性、适用范围等方面的区别。文章还探讨了每种操作系统的优缺点,以及适用场景。最后,作者提供了一些建议,帮助读者选择适合自己的操作系统。
用户1138785
2018/01/03
1.3K0
SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化(C#自带函数的3到4倍速度)。
Base64是一种用64个Ascii字符来表示任意二进制数据的方法。主要用于将不可打印的字符转换成可打印字符,或者简单的说是将二进制数据编码成Ascii字符。Base64也是网络上最常用的传输8bit字节数据的编码方式之一。
用户1138785
2021/09/08
1.1K0
AVX图像算法优化系列二: 使用AVX2指令集加速查表算法。
  查表算法,无疑也是一种非常常用、有效而且快捷的算法,我们在很多算法的加速过程中都能看到他的影子,在图像处理中,尤其常用,比如我们常见的各种基于直方图的增强,可以说,在photoshop中的调整菜单里80%的算法都是用的查表,因为他最终就是用的曲线调整。
用户1138785
2022/10/28
1.6K0
AVX图像算法优化系列二: 使用AVX2指令集加速查表算法。
【工程应用五】 opencv中linemod模板匹配算法诸多疑惑和自我解读。
        研究这个前前后后也有快两三个月了,因为之前也一直在弄模板匹配方面的东西,所以偶尔还是有不少朋友咨询或者问你有没有研究过linemod这个算法啊,那个效率啥的还不错啊,有段时间一直不以为然,觉得我现在用的那个匹配因该很不错的,没必要深究了。后来呢,还是忍不住手痒,把论文打出来看了看,又找了点资料研究了下,结果没想到一弄又是两个月过去了,中间也折腾了很久,浪费了不少时间。总算还是有点收获,稍微整理下做个交流。
用户1138785
2022/05/09
1.6K0
【工程应用五】 opencv中linemod模板匹配算法诸多疑惑和自我解读。
【AI PC端算法优化】一,一步步优化RGB转灰度图算法
公众号输入 「高性能计算」 关键词获取刘文志大佬的《并行编程方法与优化实践》电子书以及我整理的SSE指令集PDF。
BBuf
2020/04/15
1.7K0
【AI PC端算法优化】一,一步步优化RGB转灰度图算法
[强基固本-视频压缩] 第十三章 向量指令 第二部分:矢量化
本章节所有示例都将使用某个图像的像素块作为输入数据。为简单起见,考虑一个像素值范围为
用户1324186
2024/03/20
2190
[强基固本-视频压缩] 第十三章 向量指令 第二部分:矢量化
SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
本文介绍了自然饱和度算法及其SSE实现,该算法通过计算像素点与目标值的差值,并利用SSE指令加速处理,最后将处理后的像素点存储到目标颜色空间中。
用户1138785
2018/01/03
2.4K0
SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍
本文介绍了如何利用SSE/AVX指令集进行CPU并行加速,以解决图像转置中存在的内存访问瓶颈问题。首先介绍了图像转置的算法和实现过程,然后通过具体示例展示了如何使用SSE/AVX指令集进行CPU并行加速,最后给出了针对不同CPU架构的优化策略。
用户1138785
2018/01/03
2.1K0
C++ 中文周刊 第123期
RSS https://github.com/wanghenshui/cppweeklynews/releases.atom
王很水
2024/07/30
910
C++ 中文周刊 第123期
SSE图像算法优化
  图像金字塔技术在很多层面上都有着广泛的应用,很多开源的工具也都有对他们的建立写了专门的函数,比如IPP,比如OpenCV等等,这方面的理论文章特别多,我不需要赘述,但是我发现大部多分开源的代码的实现都不是严格意义上的金字塔,而是做了一定的变通,这种变通常常为了快捷的实现类似的效果,虽然这种变通不太会影响金字塔的效果,但是我这里希望从严格意义上对该算法进行优化,比如简要贴一下下面的某个高斯金字塔的代码:
用户1138785
2019/05/24
1.1K0
SSE图像算法优化系列十二:多尺度的图像细节提升。
本文讲述如何使用SSE指令集进行高性能图像处理,通过将图像划分为多个Block进行处理,并利用SSE指令集实现高效的滤波处理。同时,本文还根据处理结果比较了两种滤波方法的优缺点,并给出了一种基于SSE指令集的优化方法。
用户1138785
2018/01/03
1.2K0
SSE图像算法优化系列十二:多尺度的图像细节提升。
SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。
本文通过分析技术社区中的内容编辑人员如何审查文章的摘要和总结,提出了一些建议。首先,编辑人员需要关注文章的核心内容,即文章的主题和论述,以确保文章的摘要和总结与文章的主题紧密相关。其次,编辑人员需要确保文章的摘要和总结准确、简洁,并且能够吸引读者的注意力。最后,编辑人员需要考虑文章的排版和格式,以确保文章的摘要和总结在视觉上清晰易读。
用户1138785
2018/01/03
2.4K0
SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。
聊聊ClickHouse向量化执行引擎-过滤操作
俄罗斯Yandex开发的ClickHouse是一款性能黑马的OLAP数据库,其对SIMD的灵活运用给其带来了难以置信的性能。本文我们聊聊它如何对过滤操作进行SIMD优化。
yzsDBA
2023/05/25
1.1K0
聊聊ClickHouse向量化执行引擎-过滤操作
实现目前最快的半径相关类算法(附核心源码)
  我在两年前的博客里曾经写过 SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法 一文,通过SSE的优化把矩形核心的腐蚀和膨胀做到了不仅和半径无关,而且速度也相当的快,当时在被博文的评论里有博友提出了如下的问题:
用户1138785
2019/05/24
1.1K0
SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。
根据文章内容总结的摘要
用户1138785
2018/01/03
2.2K0
SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。
图像纹理合成及纹理传输算法学习(附源码)。
本文总结了基于深度学习的图像修复技术的原理和应用。首先介绍了图像修复的背景和意义,然后详细阐述了基于生成对抗网络(GAN)的图像修复方法和基于变分自编码器(VAE)的图像修复方法的技术原理和实现。最后,文章对图像修复技术的应用和前景进行了展望。
用户1138785
2018/01/03
1.7K0
图像纹理合成及纹理传输算法学习(附源码)。
SSE图像算法优化系列六:OpenCv关于灰度积分图的SSE代码学习和改进。
  最近一直沉迷于SSE方面的优化,实在找不到想学习的参考资料了,就拿个笔记本放在腿上翻翻OpenCv的源代码,无意中看到了OpenCv中关于积分图的代码,仔细研习了一番,觉得OpenCv对SSE的灵
用户1138785
2018/01/03
1.6K0
推荐阅读
【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。
1.3K0
H264/H265 NALU 起始码搜索性能优化(1)
1260
【AI PC端算法优化】三,深入优化RGB转灰度图算法
1.2K0
SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。
1.3K0
SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化(C#自带函数的3到4倍速度)。
1.1K0
AVX图像算法优化系列二: 使用AVX2指令集加速查表算法。
1.6K0
【工程应用五】 opencv中linemod模板匹配算法诸多疑惑和自我解读。
1.6K0
【AI PC端算法优化】一,一步步优化RGB转灰度图算法
1.7K0
[强基固本-视频压缩] 第十三章 向量指令 第二部分:矢量化
2190
SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
2.4K0
SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍
2.1K0
C++ 中文周刊 第123期
910
SSE图像算法优化
1.1K0
SSE图像算法优化系列十二:多尺度的图像细节提升。
1.2K0
SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。
2.4K0
聊聊ClickHouse向量化执行引擎-过滤操作
1.1K0
实现目前最快的半径相关类算法(附核心源码)
1.1K0
SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。
2.2K0
图像纹理合成及纹理传输算法学习(附源码)。
1.7K0
SSE图像算法优化系列六:OpenCv关于灰度积分图的SSE代码学习和改进。
1.6K0
相关推荐
【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验