五个goland进行go开发的小技巧
五个goland进行go开发的小技巧
本文译自5 Tips To Speed Up Golang Development With IntelliJ Or Goland 确实很实用.
1. 实现interface
比如我想为下面的结构体实现共识interface
type MyConensus struct {
}
通过右键generate->implement methods->搜索engine
一键生成下面代码:
type MyConensus struct {
info string
}
func (m *MyConensus) Author(header *types.Header) (common.Address, error) {
panic("implement me")
}
func (m *MyConensus) VerifyHeader(chain ChainReader, header *types.Header, seal bool) error {
panic("implement me")
}
func (m *MyConensus) VerifyHeaders(chain ChainReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error) {
panic("implement me")
}
func (m *MyConensus) VerifyUncles(chain ChainReader, block *types.Block) error {
panic("implement me")
}
func (m *MyConensus) VerifySeal(chain ChainReader, header *types.Header) error {
panic("implement me")
}
func (m *MyConensus) Prepare(chain ChainReader, header *types.Header) error {
panic("implement me")
}
func (m *MyConensus) Finalize(chain ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction,
uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error) {
panic("implement me")
}
func (m *MyConensus) Seal(chain ChainReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error {
panic("implement me")
}
func (m *MyConensus) SealHash(header *types.Header) common.Hash {
panic("implement me")
}
func (m *MyConensus) CalcDifficulty(chain ChainReader, time uint64, parent *types.Header) *big.Int {
panic("implement me")
}
func (m *MyConensus) APIs(chain ChainReader) []rpc.API {
panic("implement me")
}
func (m *MyConensus) Close() error {
panic("implement me")
}

提取接口
面向接口编程,有时候我们需要针对已经实现的struct提取接口.
方法:
struct->Refactor->Extract->interfac

2. 使用模板
3.1 forr 快速展开for range
forr 然后tab,就会自动展开
for key, value := range collection {
}

3.2 err 错误处理
err 然后tab,自动展开如下:

4. 填充Struct
这个相对不是很实用,

5. 自动生成测试代码
这个非常使用,单元测试,我们专注于测试本身就ok了.
在文件任意位置->Genreate->Test for File-> 自动生成该文件对应的测试文件

五个goland进行go开发的小技巧的更多相关文章
- 15个关于Chrome的开发必备小技巧[译]
谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...
- 15个关于Chrome的开发必备小技巧
一.快速查找文件 如果你使用过Sublime,那么你会知道’Go to anything’的强大.没错,Chrome现在也有了这一功能. 操作如下: 1.F12打开你的Chrome调试器: 2.按下C ...
- [译]15个关于Chrome的开发必备小技巧
谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...
- Chrome的开发必备小技巧
谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...
- iOS开发的小技巧
转自简书:http://www.jianshu.com/p/50b63a221f09 http://www.jianshu.com/p/08f194e9904c 原作者:叶孤城___ self.ta ...
- iOS开发的小技巧(断点打印)
iOS开发中我们会碰到这样的需求:打印沙盒目录,打印对象信息,对象信息可以通过断点查看,有时候对象属性繁多时看起来又比较麻烦. 今天学到一个比较实用的方法: 在运行时打一个断点,当程序停在这个断点后, ...
- android rss阅读器开发一点小技巧
这几天一直在学习开发Rss阅读器,遇到一个很坑的问题,InputSource这里总是出错.弄了好久,终于让我找到一个解决方法----看代码: new Thread(){ @Override publi ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- Android开发的小技巧,在Android Studio中使用Designtime Layout Attributes
在编写xml文件时,为了预览效果,经常会使用默认填上一些内容,比如TextView时,随便写上一个text <TextView ... android:text="Name:" ...
随机推荐
- Oracle--SMON
一,SMON功能 a) 系统监控管理,定期合并空闲,回收临时段: b) 做实例的恢复:前滚.回滚.释放资源 二,SMON什么时候做恢复? 数据修改随时发生,但是数据同步定期做:所以会产生脏块(灰块), ...
- 并行 Webclient(一)
在 Stackoverflow 上看到了一个提问,关于并行的 WebClient,觉得回答者的代码很有参考性,下面记录一下,以便日后用到: 提问者: 我有一个功能基本上分为两个子功能. html=Re ...
- Java程序使用Alpine Linux报错java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy解决
报错内容 Caused by: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-4a4b576a-c34c-481e-b6ac-9b4abacb11 ...
- centos切换php版本
centos服务器上安装了php5.3到php7.2版本的php,默认使用php -v,查看到的php版本信息为: 修改环境变量文件:vim /etc/profile shift+g跳转到最后一行环境 ...
- 阿里OSS前端直传
第一次写博客,如有错误请多多指教. 先上代码吧: ossUpload = function (file, fun, funParameter) { //第一此请求后台服务器获取认证请求 $.ajax( ...
- Lambda表达式的用法
参考:https://www.cnblogs.com/knowledgesea/p/3163725.html
- js计算两经纬度之间的距离
js如下: // 方法定义 lat,lng function GetDistance( lat1, lng1, lat2, lng2){ var radLat1 = lat1*Math.PI / ...
- python 排序 桶排序
算法思想: 桶排序将数组分到有限数量的桶里.然后每个桶里再分别排序(使用任何算法) 当要倍排序的数组内的数值时均匀分配的时候,桶排序使用线性时间O(n) 步骤: 根据最大值.最小值.桶内数据范围设定一 ...
- es6中的arrowfunction
es6新增箭头函数,主要解决了以下几点问题 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误. 不可以使用 ...
- vue工作原理分析
初始化 在 new Vue() 时会调⽤用_init()进⾏行行初始化,会初始化各种实例例⽅方法.全局⽅方法.执⾏行行⼀一些⽣生命周期. 初始化props. data等状态.其中最重要的是data的「 ...