go语言学习-数据结构

本文介绍了Go语言中的数据结构,包括数组、切片及其元素操作,重点讨论了深拷贝与浅拷贝的概念、区别及示例。同时,提到了对象、数据结构嵌套以及数据类型转换的相关知识点,如strconv和parse函数。此外,还涵盖了字符串处理和内存地址、指针的使用。
摘要由CSDN通过智能技术生成

1、数组

package main

import "fmt"

func main() {
   
	// 数组:一组具有相同类型并且长度固定的一个数据集合
	// 使用场景:班级,三位老师,
	// var 数组名 = [数组长度]数组的类型{数组的数据}
	var teacherNameArray = [3]string{
   "张宇", "张二", "张三"}
	fmt.Println(teacherNameArray)
	teacherAgeArray := [3]int{
   18, 19, 20}
	fmt.Println(teacherAgeArray)
	fmt.Println("第一位老师的名字是:", teacherNameArray[0])
	fmt.Println("第一位老师的年龄是:", teacherAgeArray[0])
	// 获取单个元素的格式:数组名称[下标],下标是从0开始的
	// 修改数据:数组名称[下标] = xxx
	teacherNameArray[2] = "dotbalo"
	fmt.Println("修改后的数据:", teacherNameArray)
	// teacherNameArray[3] = "数据4" // 数组的长度是不能修改的
	fmt.Println("数组的长度是:", len(teacherNameArray))
	for i := 0; i < len(teacherNameArray); i++ {
   
		fmt.Printf("第%d个数据为: %s\n", i+1, teacherNameArray[i])
	}
	// range --> 推荐使用的,k v分别对应下标和值
	for k, v := range teacherAgeArray {
   
		fmt.Printf("第%d位老师的年龄是: %d\n", k+1, v)
	}
	// 自动推断长度
	array3 := [...]int{
   1, 2, 3, 4, 5, 6, 7, 8, 9}
	fmt.Println("array3的长度是:", len(array3))
}

2、切片

2.1 切片基础使用

package main

import "fmt"

func main() {
   
	// 切片的长度是不固定的,并且可以自动扩容
	// var 切片名称 []切片类型  slice
	var s1 []int
	fmt.Println("最初的切片数据:", s1)
	// 默认的两个属性,一个是切片的长度,表示这个切片中有多少个元素
	// 容量:表示这个切片可以放入多少个元素
	fmt.Println("切片的默认长度是:", len(s1))
	fmt.Println("切片的默认容量是:", cap(s1))
	s1 = append(s1, 7275, 85266) //append是将数据添加到对应的切片中
	fmt.Println("长度是:", len(s1))
	fmt.Println("容量是:", cap(s1))
	fmt.Println("数据:", s1)
	// 第二种声明方式,指定长度
	s2 := make([]int, 5, 10) // 如果是string类型切片,默认的数据是什么呢?
	fmt.Println("切片的默认长度是:", len(s2))
	fmt.Println("切片的默认容量是:", cap(s2))
	fmt.Println("最初的切片数据:", s2)
	s2 = append(s2, 1, 2, 3, 4, 5, 6)
	fmt.Println("最初的切片数据:", s2)
	// 现在的切片的容量和长度是多少?
	// 长度自动扩容为11,如果容量超出后,容量会自动变为:容量*2
	fmt.Println("长度是:", len(s2))
	fmt.Println("容量是:", cap(s2))
	s2[0] = 88  //修改数据内容
	fmt.Println("切片的数据:", s2)
	for k, v := range s2 {
   
		fmt.Printf("第%d个数据是: %d\n", k+1, v)
	}
/*输出结果
最初的切片数据: []
切片的默认长度是: 0
切片的默认容量是: 0
长度是: 2
容量是: 2
数据: [7275 85266]
切片的默认长度是: 5
切片的默认容量是: 10
最初的切片数据: [0 0 0 0 0]
最初的切片数据: [0 0 0 0 0 1 2 3 4 5 6]
长度是: 11
容量是: 20
切片的数据: [88 0 0 0 0 1 2 3 4 5 6]
第1个数据是: 88
第2个数据是: 0
第3个数据是: 0
第4个数据是: 0
第5个数据是: 0
第6个数据是: 1
第7个数据是: 2
第8个数据是: 3
第9个数据是: 4
第10个数据是: 5
第11个数据是: 6
*/

2.2 切片的元素截取和删除

package main

import "fmt"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Studying!!!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值