Например,
var data, nonce, previousHash []byte
unixtime := strconv.FormatInt(time.Now().Unix(), 10)
hasher := sha1.New()
hasher.Write(data)
hasher.Write(nonce)
hasher.Write([]byte(unixtime))
hasher.Write(previousHash)
hash := hasher.Sum(nil)
Или,
var data, nonce, previousHash []byte
unixtime := strconv.FormatInt(time.Now().Unix(), 10)
soup := make([]byte, 0, len(data)+len(nonce)+len(unixtime)+len(previousHash))
soup = append(soup, data...)
soup = append(soup, nonce...)
soup = append(soup, unixtime...)
soup = append(soup, previousHash...)
hasher := sha1.New()
hasher.Write(soup)
hash := hasher.Sum(nil)
Примечание:
unixtime := time.Now().Unix()
unixtimeStr := string(unixtime)
бессмысленно.Это всегда символ замены Юникода.Например,
package main
import (
"fmt"
"time"
"unicode"
)
func main() {
unixtime := time.Now().Unix()
unixtimeStr := string(unixtime)
fmt.Println(unixtimeStr == string(unicode.ReplacementChar))
}
Вывод:
true
Чтобы преобразовать целое число в строку, используйте пакет strconv
.Например,
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
unixtimeStr := strconv.FormatInt(time.Now().Unix(), 10)
fmt.Println(unixtimeStr)
}
Вывод:
1257894000