golang学习系列——7. 要素说明

目录

 

注释

函数

类型

自定义类型

类型转换

命名规范


注释

注释风格同 c/c++

行注释: // code
块注释: /* code */

每一个包应该有相关注释,在 package 语句之前的块注释将被默认认为是这个包的文档说明,其中应该提供一些相关信息并对整体功能做简要的介绍。一个包可以分散在多个文件中,但是只需要在其中一个进行注释说明即可。

// Package superman implements methods for saving the world.
//
// Experience has shown that a small number of procedures can prove
// helpful when attempting to save the world.
package superman

几乎所有全局作用域的类型、常量、变量、函数和被导出的对象都应该有一个合理的注释。如果这种注释(称为文档注释)出现在函数前面,例如函数 Abcd,则要以 "Abcd..." 作为开头。

示例:

// enterOrbit causes Superman to fly into low Earth orbit, a position
// that presents several possibilities for planet salvation.
func enterOrbit() error {
   ...
}

godoc 工具会收集这些注释并产生一个技术文档。

函数

没啥好说的, 参考其他语言的函数,参数列表,返回值列表

//基本定义
func fun1() {
    //todo
}

//通用格式
func functionName(parameter_list) (return_value_list) {
    ...
}
  • parameter_list 的形式为 (param1 type1, param2 type2, …)
  • return_value_list 的形式为 (ret1 type1, ret2 type2, …)

参数列表里的元素类型相同时(arg1 int, arg2 int),可以简写 (arg1, arg2 int)
Golang 支持多返回值, 多返回值时需要用 () 把他们括起来

类型

变量(或常量)包含数据,这些数据可以有不同的数据类型,简称类型。类型定义了某个变量的值的集合与可对其进行操作的集合

基本类型,如:int、float、bool、string;
复合类型,如:struct、array、slice、map、channel;
只描述类型的行为的,如:interface。

使用 var 声明的变量的值会自动初始化为该类型的零值。复合类型的默认值是 nil , 参考其他语言的 NULL, 0 等...

自定义类型

使用 type 关键字可以定义你自己的类型,你可能想要定义一个新的类型,但是也可以定义一个已经存在的类型

如 type Myint int

注意不是别名,因为使用这种方法定义之后的类型可以拥有更多的特性,且在类型转换时必须显式转换。

类型别名,只能对包内的类型产生作用,对包外的类型采用类型别名,在编译时将会提示如下信息:

cannot define new methods on non-local type string

可以有很多灵活的用法:同样的数据在以不同的类型表现出来时,拥有的是不同的特性/方法。

类型转换

必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。

Go 语言不存在隐式类型转换,所有的转换都必须显式说明:类型 B 的值 = 类型 B(类型 A 的值)

valueOfTypeB = typeB(valueOfTypeA)

具有相同底层类型的变量之间可以相互转换:

var a Myint = 5
b := int(a)
c := Myint(b)

强制转换,先转为interface ,再以目的类型来解释,有点类似 c++ 的 reinterpret_cast?风险很大,程序可能会 down 掉

var str string = "abc"
var tmp interface{} = str

var num int = tmp.(int)

命名规范

我看到的是这么建议的,不建议用 _下划线,而是驼峰法

返回某个对象的函数或方法的名称一般都是使用名词,没有 Get... 之类的字符,如果是用于修改某个对象,则使用 SetName。有必须要的话可以使用大小写混合的方式,如 MixedCaps 或 mixedCaps,而不是使用下划线来分割多个名称。

对此我只想说, 建议很好,但是我不接受, 我就喜欢 Get_name() , Set_name() 这样的风格

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值