Effective Go 读书笔记

原文:​​​​​​https://golang.org/doc/effective_goicon-default.png?t=L9C2https://golang.org/doc/effective_go 中文:Effective Go中文版 · 看云Go是一个新的语言。虽然是借鉴了现有的语言,但是它独有的特性可以使得高效的Go程序,与其它语言编写的程序相比,大不相同。直接将C++或者Java 程序转换为Go程序,是不可能产生令人满意的结果—Java程序是使用Java编写的,而不是Go。另一方面,从Go的角度考虑问题则会产生成功的,而且 大不相同的程序。换句话说,想要编写好的Go程序,理解它的特性和风格是非常重要的。了解Go语言编程中已有的约定也非常重要,例如命名,格式,程序结 构,等等。这会使得其他Go程序员容易理解你编写的程序。icon-default.png?t=L9C2https://www.kancloud.cn/kancloud/effective/72199记录一些平时开发也没怎么注意的小点,时不时翻着看看

  • 使用gofmt进行代码自动格式化,使用goland进行如下配置
  • 程序包使用小写,一个单词的名字;不需要使用下划线或者混合大小写,要力求简短 
  • 接口名按照约定,单个方法的接口使用方法名加上“er”后缀来命名
  • 函数名不应该使用GetSt
  • 成功的控制流是沿着页面往下走,判断错误并终止异常情况,使代码易读
  • new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值
  • make只用于map,slice和channel,并且不返回指针
  • 数组是值。将一个数组赋值给另一个,会拷贝所有的元素
  • 数组的大小是其类型的一部分。类型[10]int和[20]int是不同的
  • 给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针
  • 切片持有对底层数组的引用,如果你将一个切片赋值给另一个,二者都将引用同一个数组。
  • 函数接受一个切片参数,那么其对切片的元素所做的改动,对于调用者是可见的,好比是传递了一个底层数组的指针。
  • 将map传递给函数,其对map的内容做了改变,则这 些改变对于调用者是可见的。
  • 要删除一个map项,使用delete内建函数,其参数为map和要删除的key。即使key已经不在map中,这样做也是安全的。
  • 常量只能是数字,字符(符文),字符串或者布尔类型。在编译时被创建。
  • 为了禁止编译器对未使用导入包的错误报告,我们可以用空白标识符来引用一个被导入包中的符号。同样的,将未使用的变量fd赋值给一个空白标识符也可以禁止编译错误。这个版本的程序就可以编译通过了。用来临时禁止未使用导入错误的全局声明语句必须紧随导入语句块之后,并且需要提供相应的注释信息。
  • 副作用式导入:import _ "net/http/pprof"
  • 接口口命名习惯以 er 结尾,结构体
  • 接口声明的是一组方法的集合)。当一个类型为接口中的所有方法提供定义时,它被称为实现该接口。
  • 超集接口口对象可转换为子子集接口口,反之出错。

 持续更新中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值