go语言学习(一):数组/切片
学习区块链之后,发现还要学习加密,接触到的视频是:Go的crypto包,所以开始接触Go。因为和solidity有些相似,但是比solidity简单一些,就开始放松的心态去学习。
每天翻着go菜鸟教程,感觉简单的一批,可是当自己真要写代码的时候,就有点闷了.
--凡是还是得脚踏实地才行!
package main
import "fmt"
func main() {
//var type_name []type
/*
切片:[]无参数
数组:只能修改值,无法改变长度,无法添加新元素
固定长度 [n] [...] //根据元素的个数来设置数组的大小
*/
var e []byte
//var e []byte = make([]byte,len)
//e := make([]byte,len)
//var a = [5]byte //type [5]byte is not an expression,= []byte{}一定要加大括号
var a [6]byte
var b = [...]byte{0}
var f byte = b[0]
//var c [...]byte //use of [...] array outside of array literal
//b = append(b, byte(1)) //first argument to append must be slice; have [0]byte
fmt.Println(a, b, e, f)
padding([]byte{1, 2, 3, 4, 4, 4, 4, 5}, 3)
}
//简单DES加密初识
// DES1.go
package main
import (
"bytes"
"fmt"
)
func padding(src []byte, blockSize int) []byte {
//1.截取加密代码 段数
fmt.Println("depadding", src)
padding := blockSize - len(src)%blockSize
//2.无余数
if padding == 0 {
padText := bytes.Repeat([]byte{byte(blockSize)}, blockSize)
src = append(src, padText...)
} else { //else 一定直接要添加到该右括号的后面,不能令起一行
//3.有余数
padText := bytes.Repeat([]byte{byte(padding)}, padding)
src = append(src, padText...)
}
//4.添加余数
//src = append(src, padText...)
return src
}
func Depadding(src []byte) []byte {
//1.取出最后一个元素
lasteum := int(src[len(src)-1])
//2.删除和最后一个元素相等长的字节
newText := src[:len(src)-lasteum]
return newText
}
func main() {
depadding := padding([]byte{1, 2, 3, 4, 5, 1, 2, 3}, 5)
enpadding := Depadding(depadding)
fmt.Println("enpadding", enpadding)
}
/*输出
depadding [1 2 3 4 5 1 2 3]
enpadding [1 2 3 4 5 1 2 3]
*/
go语言学习(一):数组/切片的更多相关文章
- GO 语言学习笔记--数组切片篇
1.对于make 数组切片,长度和容量需要理解清楚: 容量表示底层数组的大小,长度是你可以使用的大小: 容量的用处在哪?在与当你用 appen d扩展长度时,如果新的长度小于容量,不会更换底层数组,否 ...
- go语言中的数组切片:特立独行的可变数组
go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- C语言学习笔记--数组指针和指针数组
C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...
- go语言学习--指针数组和数组指针
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...
- C语言学习笔记--数组参数和指针参数
1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. ...
- c语言学习笔记 —— 数组
1. 数组的内存分配原理. 数组定义 int a[3] = {1,3,11}; 如下写法是错误的: int number; int a[number] = {1,7,9}; 原因是:没有定长的数组初 ...
- c语言学习笔记.数组.
数组: 可以存储一个固定大小的相同类型元素的顺序集合,比如int类型的数组.float类型的数组,里面存放的数据称为“元素”. 所有的数组都是由连续的内存位置组成.最低的地址对应第一个元素,最高的地址 ...
- 【原创】go语言学习(七)数组
目录 数组定义 二维数组 数组拷贝.传参 数组定义 1. 数组是同一类型的元素集合. var a [3]int //定义一个数组 //Go中数组下标从0开始,因此⻓长度为n的数组下标范围:[0,n-1 ...
随机推荐
- <meta name="renderer" content="webkit">
<meta name="renderer" content="webkit"> 当前国内的大部分主流浏览器(如360)基本都是双核浏览器,所谓双核即 ...
- 微信小程序——初始化一个小程序项目
最近准备学习一下微信小程序,因为之前有react native项目经验,学习起来应该困难不大 微信小程序官网地址:https://mp.weixin.qq.com/debug/wxadoc/dev/i ...
- mac apache服务器
//开启apache: sudo apachectl start //重启apache: sudo apachectl restart //关闭apache: sudo apachectl stop ...
- mobile webiste 中的css的font-size em及line-height等换算
在mobile web设计 中,我们常常需要使用em这个字体大小的单位.em到底是多少呢? em到底应该设置为多少个em呢?通常换算成方法是1em=target fontsize we want/fo ...
- SQL Server ->> 关于SQL Server Agent Job执行步骤时的用户上下文(User Context)问题
这是最近项目相关和自己感兴趣的一个问题:SQL Server Agent Job有几种方法可以以特定用户上下文去执行任务步骤的? 这个事情需要分几种情况来说,因为对于不同类型的任务步骤,SQL Ser ...
- 查询组成员(group)
查询组成员 $groupname = "groupname" $members = (get-adgroup $groupname -properties member).memb ...
- 使用jMeter构造逻辑上有依赖关系的一系列并发请求
相信前端开发工程师对CSRF(Cross-site request forgery)跨站请求伪造这个概念都非常熟悉,有的时候也简写成XSRF,是一种对网站的恶意利用. 尽管听起来像跨站脚本(XSS), ...
- [零基础学JAVA]Java SE面向对象部分.面向对象基础(02)
String类 JAVA:public class StringTest{ public static void main(String args[]){ //尽量避免使用new,这样会产生内存垃圾 ...
- PHP 字符串补0
转自:https://www.cnblogs.com/bluebirds/archive/2016/11/22/6091099.html#undefined 概述:项目中经常会使用到在一串编码左边.右 ...
- GitHub & Git 基础 (YouTube中文翻译版)
GitHub & Git 基础系列视频 播放列表 由于视频资源在YouTube上,可能需要FQ:https://code.google.com/p/chromeplus/ 视频包括以下内容 1 ...