golang中方法的receiver为指针和不为指针的区别
前言 最近看网站有同学提问golang中方法的receiver为指针和不为指针有什么区别,在这里我以简单易懂的方法进行说明,帮助刚刚学习golang的同学. 方法是什么 其实只要明白这个原理,基本就能理解上面提到的问题. 方法其实就是一种特殊的函数,receiver就是隐式传入的第一实参. 举个例子 type test struct{ name string } func (t test) TestValue() { } func (t *test) TestPointer() { } func...阅读全文
golang 椭圆曲线加密使用ecdsa
非对称加密算法有RSA、ECDSA,对极大整数做因数分解的难度决定了RSA算法的可靠性,ECDSA为椭圆曲线加密算法,是基于椭圆方程公式,所以安全性要高于RSA。 这里说下使用ecdsa做签名和校验,并不讲原理; golang封装的ecdsa目前只有用私钥加密,公钥做校验,没有解密环节;所以目前可以应用于数字签名; 以下为封装: /** 通过一个随机key创建公钥和私钥 随机key至少为36位 */ func getEcdsaKey(randKey string) (*ecdsa.Private...阅读全文
Golang中解决"import cycle not allowed"的2种方法
相信不少 `Gopher` 在写 `Golang` 程序都遇到过 `import cycle not allowed` 问题,本人最近研读 [go-ethereum](https://github.com/ethereum/go-ethereum) 源码时,发现定义 `interface` 也能解决此问题, 还能解决连分包都不能解决的情况, 并且比分包更加简单快捷。下面逐个讲解 `分包` 和 `定义接口` 这两种方法。 # 1. 应用场景 假设有如下使用场景: 1. `A` 是...阅读全文