当前位置: 首页 > article >正文

go语言学习-数据结构

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

http://www.kler.cn/a/135117.html

相关文章:

  • SHA-256哈希函数
  • Oracle 单机及 RAC 环境 db_files 参数修改
  • Tomcat 和 Netty 的区别及应用场景分析
  • 数字后端教程之Innovus report_property和get_property使用方法及应用案例
  • 前端:块级元素和行内元素
  • 【go从零单排】JSON序列化和反序列化
  • 【计算机网络笔记】IPv6简介
  • linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)
  • 精密云工程:智能激活业务速率 ——华为云11.11联合大促倒计时 仅剩3日
  • 未来之路:互联网技术驱动汽车行业的创新浪潮
  • Java集合大总结——List的简单使用
  • 大模型的语言能力
  • Kotlin原理+协程基本使用
  • 从能用到好用,国产CPU不是你想象中的样子了?
  • C语言入门笔记—static、extern、define、指针、结构体
  • Flink Operator 使用指南 之 Flink Operatoran安装
  • 思维导图软件 Xmind mac中文版特点介绍
  • Netty源码学习4——服务端是处理新连接的netty的reactor模式
  • 【数据结构初阶(3)】双向带头结点循环链表
  • JS模块引入方式使用 importScripts 替代 import
  • 冬季如何养胃?羊大师建议水果蔬菜不可少!
  • 学习教授LLM逻辑推理11.19
  • 用照片预测人的年龄【图像回归】
  • centos7配置 局域网自动解析hostname
  • Apache Hive源码阅读环境搭建
  • 数据集成实施过程注意点总结