Day6

昨天 学习了字典和字符串,今天学习数组和切片:

package main

import (
	"fmt"
)

func main(){
	fmt.Println("Happy 2020/12/19")
	//一、数组
	//定义数组,是包含长度的
	var arr1 = [5]int{}
	var arr2 = [5]int{1,2,3,4,5}
	var arr3 = [5]int{3:10}
	fmt.Println(arr1, arr2, arr3)
	//操作数据
	for i := 0; i < len(arr1); i++{
		arr1[i] = i * 10
	}
	fmt.Println(arr1)
	for index, value := range arr1{
		fmt.Printf("index:%d, value: %d\n", index, value)
	}
	//多维数组
	var arr4 = [5][5]int{
		{1,2,3,4,5},
		{6,7,8,9,10},
	}
	fmt.Println(arr4)

	//数组作为函数参数
	//go在传递数组时会对其进行拷贝,若传递的数组非常大会很占内存,所以一般情况下
	//很少直接传递一个数组,而是传递数组的指针或者切片


	var a[5]int
	fmt.Println("初始的a:", a)
	test(a)
	fmt.Println("函数外:", a)

	//指针数组:指针的数组
	var b [5]*int
	fmt.Println("b:",b)
	for i := 0; i < 5; i++{
		temp := i
		b[i] = &temp	//为指针数组初始化赋值
	}
	for i := 0; i < 5; i++{
		fmt.Print(" ", *b[i])
	}
	fmt.Println()
	test1(b)
	fmt.Println("函数外:")
	for i := 0; i < 5; i++{
		fmt.Print(" ", *b[i])
	}

	//数组指针:数组的指针
	var c [5]int
	var cPtr *[5]int
	cPtr = &c
	//也可直接: cPtr := &c
	fmt.Println("\n",cPtr)
	test2(cPtr)
	fmt.Println(cPtr)

	//二、切片	与数组操作类似,比数组灵活,长度不固定
	//定义切片,不需要为其指定长度
	var s0 []int
	var s1 = []int{}
	var s2 = []int{1,2,3}
	var s3 = make([]int, 5)
	var s4 = make([]int, 5, 10)	//声明了一个长度为5容量为10的切片
	//可通过len()和cap()获取长度和容量
	fmt.Println(s0)
	fmt.Println(s1)
	fmt.Println(s3)
	fmt.Println(len(s2),cap(s2))
	fmt.Println(len(s4),cap(s4))
	//切片操作,包左不包右
	array := []int{1,2,3,4,5}
	array1 := array[2:4]
	array2 := array[2:]
	array3 := array[:3]
	fmt.Println(array1)
	fmt.Println(array2)
	fmt.Println(array3)
	//切片的扩充
	fmt.Println(array)
	array = append(array, 100)
	fmt.Println(array)
	//切片的拼接
	sa := []int{1,2,3}
	sb := sa[1:3]
	fmt.Println(sb)
	sa = append(sa, sb...)
	fmt.Println(sa)
	//切片的复制
	ssa := []int{1,2,3}
	ssb := make([]int, 3)
	copy(ssb, ssa)
	fmt.Println(ssa)
	fmt.Println(ssb)
	ssc := make([]int, 4)
	copy(ssc, ssa)
	fmt.Println(ssc)
	ssd := make([]int, 2)
	copy(ssd, ssa)
	fmt.Println(ssd)


}

func test(a [5]int){
	a[1] = 100
	fmt.Println("函数内:", a)
}
func test1(b [5]*int){
	*b[1] = 100
	fmt.Println("函数内:")
	for index := range b{
		fmt.Print(" ", *b[index])
	}
	fmt.Println()
}
func test2(cPtr *[5]int){
	cPtr[2] = 100
	fmt.Println(cPtr)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:437 throw err; // Rethrow non-MySQL errors ^ Error: secretOrPrivateKey must have a value at module.exports [as sign] (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\jsonwebtoken\sign.js:107:20) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\router_handler\2user.js:49:26) at Query.<anonymous> (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:526:10) at Query._callback (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\Connection.js:488:16) at Sequence.end (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) at Query._handleFinalResultPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:149:8) at Query.EofPacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\sequences\Query.js:133:8) at Protocol._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Protocol.js:291:23) at Parser._parsePacket (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (C:\Users\admin\Desktop\前端开发\Node.js\day6\code\api_server\node_modules\mysql\lib\protocol\Parser.js:43:10) Node.js v18.12.1
06-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值