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加密初识
func padding(src []byte, blockSize int) []byte {
    number := int(len(src)) % blockSize
    fmt.Println(blockSize)
    //e := blockSize
    d := make([]byte, blockSize)
    fmt.Println(d)
    var i int
    var newByte []byte
    //newByte = append(newByte, byte(0))
    for i = 0; i < blockSize; i++ {
        //return newByte[i] = 0
        newByte = append(newByte, byte(blockSize))
        //fmt.Println(i)
    }
    fmt.Println(newByte)
    if number == 0 {
        //src = append(src, [blockSize]byte{0})
        return src
    }
    fmt.Println(number)
    return src
}

原文地址:https://www.cnblogs.com/eilinge/p/10134713.html

时间: 2024-12-13 04:26:51

go语言学习(一):数组/切片的相关文章

C语言学习_数组与指针2

数组其实是一种变相的指针,数组名同时也是指针,eg: CODE == &CODE[0]; 数组的加法: #include<stdio.h> #define SIZE 4 int main(void) { shortdates[SIZE]; short* pti; shortindex; doublebills[SIZE]; double* ptf; pti= dates;//把数组地址付给指针 ptf= bills; printf("%23s  %10s\n", &

C语言学习004:数组与指针

在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的 由于C语言并不知道数组有多长,所以用"\0"表示字符串的结束位置,通过sizeof运算符可以取到字符串在内存中占用多少个字节 同样的字符串在下面的代码中获取的长度却不一样,你知道是什么原因么? #include <stdio.h> void SayHello(char msg[]){ printf("msg occupies: %i\n",siz

C语言学习笔记--数组参数和指针参数

1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. (2)参数位于栈上,太大的数组拷贝将导致栈溢出. (3)将数组名看做常量指针,传递的是数组的首元素地址,而不是整个数组. 2. 二维数组参数 (1)二维数组参数同样存在退化的问题: 二维数组可以看做是一维数组,其中的每个元素又是一个一维数组 (2)二维数维参数中第一维的参数可以省略 ①void f(

go语言学习--指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组.p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++;       //该语句执行过后,也就是p=p+1;

15-黑马程序员------C 语言学习笔记---数组和指针

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 四 数组和指针 01 数组名代表数组在内存中的首地址,表示的是地址信息,因此数组名可以理解为一个指针,不过数组名是一个常量,不能改变. #include <stdio.h> int main() { char nam

C语言学习笔记--数组

1.数组的概念 (1)数组是相同类型的变量的有序集合 (2)数组在一片连续的内存空间中存储元素 (3)数组元素的个数可以显示或隐式指定 #include <stdio.h> int main() { //数组初始化 int a[5] = {1, 2};//第 1.2 个元素分别为 1.2,其余为 0 int b[] = {1, 2};//编译过程中,编译会为计算数组 b 的大小 int i=0; for (i = 0;i < 4;i++) { printf("a[%d] = %

[原创]go语言学习之七数组

目录 数组定义 二维数组 数组拷贝.传参 数组定义 1. 数组是同一类型的元素集合. var a [3]int //定义一个数组 //Go中数组下标从0开始,因此?长度为n的数组下标范围:[0,n-1] //整数组中的元素默认初始化为0,字符串串数组中的元素默认初始化为”” 2. 数组初始化 var a [3]int a[0] = 10 a[1] = 20 a[2] = 30 //数组初始化 var a [3]int = [3]int{10, 20, 30} //定义时数组初始化 a := [3

C语言学习--可变数组

#ifndef _ARRAY_ #define _ARRAY_ typedef struct { int *array; int size; } Array; //此处定义结构数据类型 Array,虽然下面很多传递函数需要指针,但是如果定义成*Array,那么在函数里定义一个本地变量Array的时候会很麻烦. Array array_creat(int int_size); void array_free(Array *a); int array_size(const Array *a); in

go语言-golang基础-数据类型数组,数组切片,映射

7.7 数组 数组是Go语言编程中最常用的数据结构之一.顾名思义,数组就是指一系列同一类型数据的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度. 以下为一些常规的数组声明方法: [32]byte // 长度为32的数组,每个元素为一个字节 [2*N] struct { x, y int32 } // 复杂类型数组 [1000]*float64 // 指针数组 [3][5]int // 二维数组 [2][2][2]float64 // 等同于[2