[日常] Go语言圣经--复合数据类型,数组习题
2023-02-18 15:41:36 时间
go语言圣经-复合数据类型
1.以不同的方式组合基本类型可以构造出来的复合数据类型
2.四种类型——数组、slice、map和结构体
3.数组是由同构的元素组成——每个数组元素都是完全相同的类型——结构体则是由异构的元素组成的
4.slice和map则是动态的数据结构,它们将根据需要动态增长
go语言圣经-数组
1.因为数组的长度是固定的,因此在Go语言中很少直接使用数组
2.数组字面值语法用一组值来初始化数组
3.数组的长度是数组类型的一个组成部分
4.Printf函数的%x副词参数,它用于指定以十六进制的格式打印数组或slice全部的元素,%t副词参数是用于打印布尔型数据,%T副词参数是用于显示一个值对应的数据类型
5.函数传参可以显式地传入一个数组指针,那样的话函数通过指针对数组的任何修改都可以直接反馈到调用者
练习 4.1: 编写一个函数,计算两个SHA256哈希码中不同bit的数目。(参考2.6.2节的PopCount函数。)
练习 4.2: 编写一个程序,默认情况下打印标准输入的SHA256编码,并支持通过命令行flag定制,输出SHA384或SHA512哈希算法。
1. 查看下文档 godoc crypto/sha256
func Sum256(data []byte) [Size]byte
2. godoc crypto
package main import( "fmt" "crypto/sha256" "crypto/sha512" "flag" "strings" ) //命令行标志 var hashMethod=flag.String("s","sha256","请输入哈希算法") func main(){ flag.Parse() num := compareSha256("x","X") fmt.Println(num) //接收命令行flag,进行判断 printHash(strings.ToUpper(*hashMethod),"x") } /* 练习 4.1: 编写一个函数,计算两个SHA256哈希码中不同bit的数目。(参考2.6.2节的PopCount函数。) */ func compareSha256(str1 string,str2 string)int{ a := sha256.Sum256([]byte(str1)) b := sha256.Sum256([]byte(str2)) num := 0 //循环字节数组 for i:=0;i<len(a);i++{ //1个字节8个bit,移位运算,获取每个bit for m:=1;m<=8;m++{ //比较每个bit是否相同 if (a[i] >> uint(m))!=(b[i] >>uint(m)){ num++ } } } return num } /* 练习 4.2: 编写一个程序,默认情况下打印标准输入的SHA256编码,并支持通过命令行flag定制,输出SHA384或SHA512哈希算法。 */ func printHash(flag string,str string){ if flag=="SHA256"{ fmt.Printf("%x\n",sha256.Sum256([]byte(str))) return } if flag=="SHA512"{ fmt.Printf("%x\n",sha512.Sum512([]byte(str))) return } if flag=="SHA384"{ fmt.Printf("%x\n",sha512.Sum384([]byte(str))) return } }
相关文章
- 《痞子衡嵌入式半月刊》 第 69 期
- 痞子衡嵌入式:对比恩智浦全系列MCU(包含Kinetis/LPC/i.MXRT/MCX)的GPIO电平中断设计差异
- 痞子衡嵌入式:我被邀请做科锐国际旗下数科同道主办的技术沙龙嘉宾
- 痞子衡嵌入式:低功耗&高性能边缘人工智能应用的新答案 - MCXN947
- 《痞子衡嵌入式半月刊》 第 68 期
- 痞子衡嵌入式:我为2021 TencentOS Tiny AIoT应用创新大赛做了场直播培训
- 痞子衡嵌入式:我被邀请做贸泽电子&与非网联合推出的《对话工程师》节目嘉宾
- 痞子衡嵌入式:存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)
- 痞子衡嵌入式:国内外串行NOR Flash厂商官网Cross Reference功能使用体验
- 痞子衡嵌入式:MCUXpresso IDE下高度灵活的FreeMarker链接文件模板机制
- 《痞子衡嵌入式半月刊》 第 67 期
- 《痞子衡嵌入式半月刊》 第 66 期
- 《痞子衡嵌入式半月刊》 第 65 期
- 痞子衡嵌入式:i.MXRT中FlexSPI外设不常用的读选通采样时钟源 - loopbackFromSckPad
- 痞子衡嵌入式:RT-MFB - 一种灵活的i.MXRT下多串行NOR Flash型号选择的量产方案
- 《痞子衡嵌入式半月刊》 第 64 期
- 痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用
- 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事(SR寄存器BP[x:0]位)
- 痞子衡嵌入式:MCUXpresso IDE下生成镜像文件的方法及其与IAR,MDK差异
- 《痞子衡嵌入式半月刊》 第 63 期