golang struct扩展函数参数命名警告解决方法

今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下:

package storage

import (
  "fmt"

  "github.com/zsy619/gcommon"
)

//ChunkFooter 块Footer
type ChunkFooter struct {
  ChunkDataTotalSize int
}

//NewChunkFooter 创建一个ChunkFooter
func NewChunkFooter(chunkDataTotalSize int) *ChunkFooter {
  var result = new(ChunkFooter)
  result.ChunkDataTotalSize = chunkDataTotalSize
  return result
}

//ToString ChunkFooter转换为String
func (cf *ChunkFooter) ToString() string {
  return fmt.Sprintf("[ChunkDataTotalSize:%d]", cf.ChunkDataTotalSize)
}

//AsByteArray 转换成byte数组
func (nf *ChunkFooter) AsByteArray() []byte {
  //var result [chunkFooterSize]byte
  buffer := gcommon.IntToFixedLengthBytes(nf.ChunkDataTotalSize, ChunkFooterSize)
  return buffer
}

请注意函数ToString与AsByteArray中的*ChunkFooter参数,一个是cf,一个nf,提示以下警告:

意思是将nf更改为cf,也就是struct扩展函数中对应对象的命名应该已第一个函数的命名为基准。

可参考参官方指南Effective GolangGolang Code Review Comments进行整理,力图与官方及社区编码风格保持一致。

将函数ToString修改成如下:

//ToString ChunkFooter转换为String
func (this *ChunkFooter) ToString() string {
  return fmt.Sprintf("[ChunkDataTotalSize:%d]", this.ChunkDataTotalSize)
}

提示以下警告信息:

要排除使用me、this、self这些命名。可根据golang官网的命名规则,并结合本公司要求,进行统一命名。

时间: 2017-02-15

golang 函数以及函数和方法的详解及区别

golang 函数以及函数和方法的区别 在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西.官方的解释是,方法是包含了接收者的函数.到底什么意思呢. 首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体.例 func main() { fmt.Println("Hello go") } 在golang中有两个特殊的函数,main函数和ini

Golang学习笔记(五):函数

函数 Go语言里面的核心设计,通过关键字func来声明 复制代码 代码如下: func funcName(input type1, input2 type2) (output1 type1, output2 type2) {     //logical code     return value1, value2 } 基本语法 1.语法 复制代码 代码如下: //一般函数 func func_name(a int) {     println(a) } //多参数,无返回值 func func_

golang中strconv.ParseInt函数用法示例

本文实例讲述了golang中strconv.ParseInt函数用法.分享给大家供大家参考,具体如下: golang strconv.ParseInt 是将字符串转换为数字的函数,功能灰常之强大. 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制 参数3 返回结果的bit大小 也就是int8 int16 int32 int64 func ParseInt(s string, base int, bitSize int) (i int64, err erro

Golang记录、计算函数执行耗时、运行时间的一个简单方法

先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法 func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) { dis := time.Now().Sub(start).Seconds() if dis > timeLimit { log.Warning(log.CENTER_COMMON_WARNING, tag, " detailed:&quo

golang模板template自定义函数用法示例

本文实例讲述了golang模板template自定义函数用法.分享给大家供大家参考,具体如下: golang的模板十分强大,其中的unix管道风格函数调用很是喜欢. 模板中有很多内置可以参看pkg文档, 另外还可以实现自定义函数. 例子如下: 复制代码 代码如下: package main import (     "text/template"     "time"     "os" ) type User struct {     Usern

Golang的os标准库中常用函数的整理介绍

os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名,新文件名,然后返回一个error其实这个函数的真正实现用的syscall.Rename()然后通过MoveFile(from *uint16, to *uint16) (err error) = MoveFileW来重新命名 复制代码 代码如下: import (  "fmt"  "os" ) func main() {  e

深入解析golang编程中函数的用法

函数是一组一起执行任务的语句.每Go程序具有至少一个函数,它一般是main(),以及所有的最琐碎程序可以定义附加函数. 你可以将代码放到独立的功能.如何划分代码之间的不同功能,但逻辑上的划分通常是让每个函数执行特定的任务. 函数声明告诉编译器有关的函数的名称,返回类型和参数.一个函数定义提供了函数的实际主体. Go语言标准库提供了大量的内置函数,在程序可以调用.例如,函数len()需要不同类型的参数和返回值的类型的长度.例如,如果一个字符串传递给它,它会返回字符串的长度以字节为单位,如果一个数组

Python中函数的用法实例教程

本文以数值计算为例讲述了Python中函数的用法,分享给大家供大家参考借鉴之用.具体如下: 我们都知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = 73.1 s1 = 3.14 * r1 * r1 s2 = 3.14 * r2 * r2 s3 = 3.14 * r3 * r3 当代码出现有规律的重复的时候,你就需要当心了,每次写3.14 * x * x不仅很麻烦

Android编程中Perferences的用法实例分析

本文实例讲述了Android编程中Perferences的用法.分享给大家供大家参考,具体如下: 浏览手机的/data/data/目录中的各个package的目录,经常会看到有一个shared_prefs文件夹,里面有一个包名_preferences.xml文件,这个文件就是要说的主角,下面简称他为配置文件: 这个文件类似于一个配置文件的角色,记录应用的一些属性值,比如如果你的应用提供了指导用户使用的向导功能,那么估计肯定会提供选项让用户来关闭这个功能,那么你可以将这个开关放置在这个文件里,下次

jsp编程中session的用法实例分析

本文实例讲述了jsp编程中session的用法.分享给大家供大家参考,具体如下: TTP协议是无状态的,即信息无法通过HTTP协议本身进传递.为了跟踪用户的操作状态,ASP应用SESSION对象.JSP使用一个叫HttpSession的对象实现同样的功能.HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面.Session的信息保存在服务器端,Session的id保存在客户机的cookie中.事实上,在许多服务器上,如果浏览器支持的话它们就使用cook

Android编程中自定义dialog用法实例

本文实例讲述了Android编程中自定义dialog用法.分享给大家供大家参考,具体如下: dialog是android中提供的一组弹出提示框,非常好用,可是它的样式是一个定式,有时候我们需求定义一些自己的样式 1.定义一个样式文件,此文件继承自Theme.Dialog,在style.xml文件中建立一个自己的样式 <style name="addNoteType_error_Dialog" parent="@android:Theme.Dialog">

Android编程中HTTP服务用法详解

本文实例讲述了Android编程中HTTP服务用法.分享给大家供大家参考,具体如下: 在Android中,除了使用java.net包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache HttpClient是一个完善的HTTP客户端,它提供了对HTTP协议的全面支持,可以使用HTTP GET和POST进行访问.下面我们就结合实例,介绍一下HttpClient的使用方法. 我们新建一个http项目,项目

解析C++编程中virtual声明的虚函数以及单个继承

虚函数 虚函数是应在派生类中重新定义的成员函数. 当使用指针或对基类的引用来引用派生的类对象时,可以为该对象调用虚函数并执行该函数的派生类版本. 虚函数确保为该对象调用正确的函数,这与用于进行函数调用的表达式无关. 假定基类包含声明为 virtual 的函数,并且派生类定义了相同的函数. 为派生类的对象调用派生类中的函数,即使它是使用指针或对基类的引用来调用的. 以下示例显示了一个基类,它提供了 PrintBalance 函数和两个派生类的实现 // deriv_VirtualFunctions

深入解析JavaScript编程中的this关键字使用

JavaScript 里的 this 到底指得是什么?很多人都会告诉你 this 指的是当前对象.这样理解对么?在大多数情况下确实没错.比如我们经常会在网页上写这样的 JavaScript: <input type="submit" value="提交" onclick="this.value='正在提交数据'" /> 这里的this显然指的是当前对象,即这个提交按钮.通常,我们使用this的情况都与此类似.但是有什么情况不是这样的呢

Android编程中PopupWindow的用法分析【位置、动画、焦点】

本文实例讲述了Android编程中popupwindow用法.分享给大家供大家参考,具体如下: 在Android中有很多级别的Window,不同级别的Window按照z-index方向分布.下面看看Android控件(view)PopupWindow的用法(位置.动画.焦点). 1.创建PopouWindow及相关参数设置 //创建一个包含自定义view的PopupWindow private PopupWindow makePopupWindow(Context cx) { PopupWind

深入解析C++编程中的静态成员函数

C++静态成员函数 与数据成员类似,成员函数也可以定义为静态的,在类中声明函数的前面加static就成了静态成员函数.如 static int volume( ); 和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分. 如果要在类外调用公用的静态成员函数,要用类名和域运算符"::".如 Box::volume( ); 实际上也允许通过对象名调用静态成员函数,如 a.volume( ); 但这并不意味着此函数是属于对象a的,而只是用a的类型而已. 与静态数据成员不同,静态成