golang学习总结-数组 切片

golang学习总结-数组 切片代码总结

package basecode

/**
*  golang 数组 切片 映射
*  数组是 切片和映射的底层
*
 */

import (
	"fmt"
	"reflect"
)

// 注意 java中的数字 是 int[] ar1 刚好反着来
var ar1 [3]string //指定数组长度

// 测试golang 数组功能
func ArrayTest() {
	arrayAndSlice()
	//arrayInit()

	//sliceupTest()

	//mapTest()
}

func arrayAndSlice() {
	fmt.Println("\n\n golang 数组测试 ")
	//创建并初始化好一个数组
	//只要有初始值设置的就是数组
	ar2 := [5]int{19, 22, 32, 43, 66}
	ar2_1 := ar2    //数组复制
	ar2_1[0] = 4445 //修改数据不影响原始数组
	fmt.Println("数组内容:", ar2[0])

	ar3 := [...]int{11, 33, 2}

	ar4 := [5]int{1: 12, 4: 33}

	//还可以创建指针数组即数组内的值都是指针
	ar5 := [5]*int{0: new(int), 3: new(int)}
	//使用* 来设置指针值
	*ar5[0] = 165

	fmt.Println("数组内容:", ar2[1], ar3[2], ar4[4], "*ar5[0]:", *ar5[0], ar5[0])

	fmt.Println(reflect.TypeOf(ar4))

	fmt.Println("\n\n golang 切片测试 ")
	//切片之所以叫切片 就是因为底层数组切了一部分
	var slice1 []int
	slice2 := []int{1, 2, 3, 4, 5} //这也是一个切片

	//使用make创建切片 第一个参数是切片类型 第二个参数是切片的长度 第三个参数是切片的容量
	slice3 := make([]int, 4, 6)

	//创建一个切片  切片长度和容量都是5
	slice4 := make([]int, 5)

	fmt.Println(reflect.TypeOf(slice1)) //输出[]int 只要没有初始值得就是切片
	fmt.Println(reflect.TypeOf(slice2))
	fmt.Println(reflect.TypeOf(slice3))
	fmt.Println(reflect.TypeOf(slice4))

	//golang 内置函数len 获取长度   cap 获取容量
	fmt.Println("长度:", len(slice3), "容量", cap(slice3))
}

// 数组赋值
func arrayInit() {
	ar1[0] = "yyyy~~~"
	ar1[1] = "xxxxx~~~"
	fmt.Println("ar1[0]: ", ar1[0])
	fmt.Println(ar1) //数组打印是 [yyyy~~~ xxxxx~~~ ]
}

// 切片
// 切片类型java 中的list 可以自动扩容
// 内置函数 make创建 明显 切边优于数组
func sliceupTest() {
	fmt.Println("\n\n golang 数组切片 ")
	//使用内置函数make创建一个切片 第一个参数是切片数组类型  第二个是切片长度
	ch := make([]string, 4)
	ch[0] = "jk0"
	ch[1] = "jk1"
	ch[2] = "jk2"
	ch[3] = "jk3"
	fmt.Println("ch[2] : ", ch[2])

	//使用内置append函数扩容切片,数据加载数组的尾部,按参数顺序加入到尾部
	//ch = append(ch,"appjk4")
	ch = append(ch, "appjk4", "apJK5")

	fmt.Println("ch[4] : ", ch[4])

	//使用range循环 切片
	fmt.Println("\n")
	for j, n := range ch {
		fmt.Println("ch[", j, "] 数组值AB:", n)
	}

	//使用:数字来获取子切片
	//
	fmt.Println("\n 获取子切片")
	chp := ch[:3] //表示从切片下标3向前 注意不包括3
	fmt.Println(chp)
	fmt.Println(ch[2:]) //表示从切片下标2向后 包括2

	//
	fmt.Println("\n 删除切片后方案1-------")
	ch = append(ch[:3], ch[4:]...) //注意需要加...
	for j, n := range ch {
		fmt.Println("ch[", j, "] 数组值:", n)
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞的4角钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值