首页 > 其他分享 >【golang】Golang 哈希码 hashcode 输入一个字符串,得到一个唯一标识码

【golang】Golang 哈希码 hashcode 输入一个字符串,得到一个唯一标识码

时间:2023-11-15 15:35:24浏览次数:27  
标签:return hashcode Golang 2231530958 哈希 crc32 标识码

如何输入一个字符串,得到一个唯一的hashcode?

例子如下:

package main

import (
        "fmt"
        "hash/crc32"
)

// String hashes a string to a unique hashcode.
//
// crc32 returns a uint32, but for our use we need
// and non negative integer. Here we cast to an integer
// and invert it if the result is negative.
func String(s string) int {
        v := int(crc32.ChecksumIEEE([]byte(s)))
        if v >= 0 {
                return v
        }
        if -v >= 0 {
                return -v
        }
        // v == MinInt
        return 0
}


func main(){
        str := "123456abcd"

        for i:=0; i<3;i++ {
                hc := String(str)
                fmt.Println("hashcode:", hc)

        }
}

output:

hashcode: 2231530958
hashcode: 2231530958
hashcode: 2231530958

【参考链接】


https://godoc.org/github.com/hashicorp/terraform/helper/hashcode

https://github.com/hashicorp/terraform/blob/master/helper/hashcode/hashcode.go

Golang 哈希码 hashcode 输入一个字符串,得到一个唯一标识码

 

标签:return,hashcode,Golang,2231530958,哈希,crc32,标识码
From: https://www.cnblogs.com/opensmarty/p/17833949.html

相关文章

  • golang slice
    slice是golang的切片,动态数组底层结构//runtime/slice.gotypeslicestruct{ arrayunsafe.Pointer//底层数组 lenint capint}golang的slice底层是一个数组,也就是可以通过&s[0]来获取底层数组的地址,len记录的当前,cap记录的是底层数组的大小也就是当前......
  • golang版本升级(Mac GoLand版)
    本地的go版本是1.18,想升级到1.21,运用GoLand做快速升级第一步  进入GoLand-》Preferences第二步  进入Go-〉GOROOT点击“+”号,选择“Download”第三步选择需要更新的版本 点击“OK”后“Apply”,最新版的go就会下载到你的GOPATH里面了 升级完新版本后,deb......
  • Golang workSpace工作区
    创建myworkspace主项目mkdirmyworkspacecdmyworkspace创建common子项目mkdircommon&&cdcommongomodinitcommonvimcommon.gomyworkspace/common/common.gopackagecommonimport"fmt"funcDosomething(){fmt.Println("dosomet......
  • Golang反射
    反射的结构体//reflect/type.gotypeTypeinterface{//该类型内存分配大小(内存对齐单位子节) Align()int //该类型作为结构体字段时内存分配大小(内存对齐单位子节) FieldAlign()int//根据indexin[0,NumMethod())获取方法按lexicographic排序 Method(i......
  • 关于Golang三个内存区域的形象比喻
    当我们使用Go语言编写程序时,可以将这三个内存区域类比为一个大的游乐场。Arena区就像是整个游乐场的主要区域,它是用于分配和管理大对象的地方。在这个区域,我们可以找到各种大型游乐设施,比如大型滑梯、蹦床和攀爬架等。这些设施需要更多的空间和资源来支持,因此它们被分配在Arena区域......
  • Golang内存泄漏的代码示例
    以下是几个可能导致内存泄漏的Go代码示例:资源未关闭:funcreadFile(){ file,err:=os.Open("filename.txt") iferr!=nil{ //错误处理 return } //使用file进行读取操作 //...}在上述代码中,readFile函数打开了一个文件,但没有在使用完后调用file.Close()来关闭文......
  • Golang select语句代码示例
    在Go语言中,select语句用于多路选择(multiplexing),允许在多个通信操作中选择可用的操作进行执行。select语句的语法如下:select{case<-channel1://当channel1有数据可读时执行的代码casedata:=<-channel2://当channel2有数据可读时执行的代码,同时将读取的数据存储在......
  • Golang 无缓冲channel有哪些特点?
    无缓冲channel是Go语言中的一种特殊类型的channel,其主要特点是在发送和接收数据时要求发送方和接收方必须同时准备好,否则会造成阻塞。具体来说,当一个无缓冲channel的发送操作没有准备好时,会阻塞发送方的执行;同样地,当一个无缓冲channel的接收操作没有准备好时,会阻塞接收方的执行。无......
  • Golang中如何使用new函数创建一个结构体对象?
    在Go语言中,可以使用new函数创建一个结构体对象的指针。下面是使用new函数创建结构体对象的示例:typePersonstruct{NamestringAgeint}funcmain(){//使用new函数创建一个Person结构体对象的指针p:=new(Person)//设置结构体对象的字段值......
  • Golang 锁
    写锁需要阻塞写锁:一个协程拥有写锁时,其他协程写锁定需要阻塞写锁需要阻塞读锁:一个协程拥有写锁时,其他协程读锁定需要阻塞读锁需要阻塞写锁:一个协程拥有读锁时,其他协程写锁定需要阻塞读锁不能阻塞读锁:一个协程拥有读锁时,其他协程也可以拥有读锁......