初学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"
)
posted @ 2024-12-10 17:31  鹿鹿脖子长  阅读(5)  评论(0)    收藏  举报