初学Golang的一些细节
自动推断类型与变量的赋值问题
// 显示定义变量的类型
var block Block
bci.db.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket([]byte(blockBucket))
if bucket == nil {
log.Panic("Error: Bucket is nil!")
}
v := bucket.Get(bci.currentHashPointer)
// decode
block := Deserialize(v) // 问题出在这里,不应该使用自动推断类型赋值,可能会导致识别为内部变量,类似于js中的闭包?
bci.currentHashPointer = block.PrevHash
return nil
})
return &block // 导致返回为空
关于引用的问题
// 定义MAP
map := make(map[string][]int64)
// 这个隐藏的BUG让我没反应过来,找了半天
array := map["id"]
array = append(array, 10)
// 应该这样写
map["id"] = append(map["id"], 10)
应用开源组件ripemd160报错的问题
import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
"crypto/sha256"
// "github.com/btcsuite/btcutil/base58"
"./lib/base58"
// "golang.org/x/crypto/ripemd160"
"./lib/ripemd160" // 这里报红,但代码没有报红,编译不过,怀疑是版本问题,去官网下载了最新的代码并覆盖,问题解决
"log"
)

浙公网安备 33010602011771号