文档章节

五个goland进行go开发的小技巧

若离x
 若离x
发布于 2019/12/05 20:55
字数 410
阅读 125
收藏 0

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-> 自动生成该文件对应的测试文件

© 著作权归作者所有

若离x
粉丝 46
博文 77
码字总数 86364
作品 0
广州
私信 提问
加载中

评论(1)

OSC_DSbsEY
OSC_DSbsEY
非常棒,很实用
JetBrains 出品的 Go 集成开发环境 GoLand 发布正式版

去年 12 月,JetBrains 发布了基于 IntelliJ 平台的 Go 语言集成开发环境,代号 Gogland。后来该 IDE 的名字确定为 GoLand。经过一年的开发,正式版 GoLand 2017.3 现已发布。 正如 IntelliJ...

局长
2017/12/01
9K
53
Go 的 IDE Goland 性能优化

最近在使用 Goland 写代码的时候,感觉 Goland 明显有点卡,快捷键呼出 Package structure 经常半天才响应。 这这这……这不应该是我这 i7-7700 + 32G 内存 + 256G SSD 黑苹果该有的状态,一...

anoty
2018/10/31
671
0
GoLand 公布 2019.3 Roadmap,有望引入远程开发功能

GoLand 2019 年的第二个重大版本 2019.2 已发布一段时间了,主要更新内容是对调试器功能的增强:调试器中支持函数调用,并在变量面板中显示,和方法的返回结果。其他一些改进包括引入精心设计...

局长
2019/08/29
6.4K
13
GoLand 2019.3 发布首个 Beta 版本

GoLand 2019.3 首个 Beta 版本已发布,与 EAP 版本相比,Beta 版本更加稳定,不过仍包含一些错误。所以从该版本开始,开发团队将专注于完善功能并为最终版的发布做好准备。 性能 官方提供的数...

局长
2019/11/18
1.3K
5
GoLand 2018.1 EAP 2 发布,Go 语言集成开发环境

GoLand 2018.1 EAP 2 发布了。GoLand 是 JetBrains 公司推出的 Go 语言集成开发环境。GoLand 同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。 上周宣布GoLand 2018.1拉开帷幕。今天...

周其
2018/02/03
1.9K
6

没有更多内容

加载失败,请刷新页面

加载更多

00-Java 面试准备

面试之前 面试前准备简历需要注意的几个方面: 写简历、改简历,这个一定要干的。简历有两个作用,一个是吸引别人,能让别人邀请你去面试,这是前提;另一个是引导面试的人,让面试的人问你所...

源程序
今天
54
0
OSChina 周二乱弹 —— 大王(@罗马的王)颜值制霸Osc社区

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :Lunik的单曲《Seeing You Soar》 I hope you’re smiling,When seeing me soar. #今日歌曲推荐# 《Seeing You Soar》- Lunik 手...

小小编辑
今天
75
0
wordcount代码

1.写出map类 public class WCMapper extends Mapper<LongWritable,Text,Text,LongWritable>{ @Override protected void map(LongWritable key,Text value,Context context)throws IOExcepti......

七宝1
今天
59
0
Spring Batch 小任务(Tasklet)步骤

Chunk-Oriented Processing不是处理 step 的唯一方法。 考虑下面的一个场景,如果你仅仅需要调用一个存储过程,你可以在 ItemReader 中实现这个调用,然后在存储过程完成调用后返回 null。这...

honeymoose
今天
67
0
Linux日志分析

1. Linux日志文件的类型 2. 系统服务日志 2.1 syslogd的简介 2.2 syslogd的配置和使用 2.3 日志的安全性设置 2.4 远程日志记录服务 3. 日志的轮替 3.1 logrotate简介 3.2 logrotate的配置 3....

JiaMing
昨天
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部