Go语言的数据结构

数据结构

数组

支持多维数组,属于值类型,支持range遍历
例子:随机生成长度为10整数数组

package main
import ("fmt""math/rand"
)
// 赋值 随机获取100以内的整数
func RandomArrays() {var array [10]int //声明var max intfor i := 0; i < 10; i++ {array[i] = rand.Intn(100)if array[i] > max {max = array[i]}}fmt.Printf("数组内容:%v,长度为:%d, 最大值:%d\n", array, len(array), max) //获取数组长度len(array)
}

 Map

	// 创建mapcountryCapitalMap := make(map[string]string)// 增加Map元素(故意写错的,方便测试修改,中国人,非行走的五十万🙏)countryCapitalMap["China"] = "Shanghai"countryCapitalMap["India"] = "New Delhi"countryCapitalMap["USA"] = "Washington D.C."// 查询Map元素capital, present := countryCapitalMap["China"]if present {fmt.Printf("中国的首都是 %s\n", capital)} else {fmt.Println("未找到国家")}// 修改Map元素countryCapitalMap["China"] = "Beijing"// 删除Map元素delete(countryCapitalMap, "India")// 遍历mapfor country, capital := range countryCapitalMap {fmt.Printf("国家: %s, 首都: %s\n", country, capital)}

指针

引用类型

var a  = 100
b:= &a  // 取地址 赋值给指针变量
c:= *b // 指针变量中指向地址的值
var d *int //定义字符指针
d = b
fmt.Println(a,b,c,*d) //100 0xc0000120d0 100 100
*b = 666
fmt.Println(a,b,c,*d) //666 0xc0000120d0 100 666
a = 999
fmt.Println(a,b,c,*d)  //999 0xc0000120d0 100 999

make 与 new, make 只能用于初始化slice,map,chan类型;new 可以用于任何类型,nil 代表空指针

var slice1 = make([]int,5)
var map1 = make(map[int]string)
var chan1 = make(chan int,3)
var x *int = new(int)
var y *int
var z * map[int]string = new(map[int]string)
fmt.Println(x==nil,y==nil,z==nil) //输出false,true,false

函数

函数支持多个返回值,支持闭包函数,函数参数支持函数类型,不定长参数用 ...,不支持函数重载

  • 返回多个值
交换X与Y的值,并返回
func Swap(x int , y int) (int, int){return  y, x
}
  • 函数参数实现回调函数
type FuncType func(x int, y int) int //声明函数类型func Minus(x int, y int) int {return x - y
}
func CalFun(x int, y int, cal FuncType) int {return cal(x, y)
}
func main() {var result = CalFun(100, 200, func(x int, y int) int { //匿名回调函数return x + y})fmt.Println(result)fmt.Println(Minus(200, 100))
}
  • 递归函数实现N的阶乘
func Factorial(n int64) int64 {if n <= 1 {return 1}return n * Factorial(n-1)
}

函数选择题

func add(args ...int) int {sum := 0for _, arg := range args {sum += arg}return sum
}

下面对add函数调用错误的是:

判断哪个选择是错误的:

A:add(1, 2)

B:add(1, 3, 7)

C:add([]int{1, 2})

D:add([]int{1, 3, 7}...)

A与B是普遍的数据传值结构

C与D是切片的传值结构,但是add方法中的入参为:...int

所以需要通过「...」将切片打散

add([]int{1, 3, 7}...)可以打散为:add(1, 3, 7)

C选项是切片的方式,所以传输会异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL进阶篇】锁:全局锁、表级锁以及行级锁

一、锁的概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须要解决的一个问题&am…

C语言11 结构体、共用体、枚举和重定义

目录 结构体&#xff08;Struct&#xff09; 定义结构体 声明和初始化结构体变量 访问结构体成员 嵌套结构体 指向结构体的指针 共用体&#xff08;Union&#xff09; 定义共用体 声明和使用共用体 重定义&#xff08;Typedef&#xff09; 定义类型别名 使用类型别…

Person Re-Identification(Re-ID)的分类

行人重识别&#xff08;Person Re-Identification, Re-ID&#xff09;是计算机视觉和深度学习中的一个重要任务&#xff0c;旨在通过图像或视频中的行人外观信息来识别和追踪同一个人在不同摄像头视角下的出现。根据任务的不同&#xff0c;行人重识别可以分为以下几类&#xff…

室内消防逃生通道占用检测AI算法:科技筑防,守护生命通道

随着城市化进程的加快&#xff0c;高层建筑和大型公共场所的数量急剧增加&#xff0c;消防安全问题愈发凸显。其中&#xff0c;室内消防逃生通道的畅通性直接关系到火灾发生时人员的安全疏散。然而&#xff0c;由于各种原因&#xff0c;如杂物堆放、车辆停放等&#xff0c;消防…

nacos 2.3.2 若依使用mysql

1&#xff09;从官网下载 nacos&#xff0c;如果下载慢&#xff0c;关注从本人发布上传下载也可以 2&#xff09;修改配置文件 【config】-【application.properties】 ### Deprecated configuration property, it is recommended to use spring.sql.init.platform replaced.…

SpringBoot实现定时任务-@Scheduled

在Java编程中&#xff0c;Scheduled 注解是 Spring Framework 提供的一个用于定时任务的注解。 Scheduled可以将一个方法配置为定时执行的任务。 以下是一些基本用法&#xff1a; 1.固定速度 fixedRate指两次任务的开始时间间隔。所以存在第二次任务开始时&#xff0c;第一…

LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)

给你一个下标从 0 开始的字符串 num &#xff0c;表示一个非负整数。 在一次操作中&#xff0c;您可以选择 num 的任意一位数字并将其删除。请注意&#xff0c;如果你删除 num 中的所有数字&#xff0c;则 num 变为 0。 返回最少需要多少次操作可以使 num 变成特殊数字。 如…

mysql各个参数调整

innodb_lock_wait_timeout 事务锁释放时间

前端知识--前端访问后端技术Ajax及框架Axios

一、异步数据请求技术----Ajax Ajax是前端访问后端的技术&#xff0c;为异步请求&#xff08;不刷新页面&#xff0c;请求数据&#xff0c;只更新局部数据&#xff09;。 例如&#xff1a;在京东网站中搜索电脑&#xff0c;就会出现一些联想搜索&#xff0c;但此时页面并没有…

【技术支持】canvas转换为图片或PDF保存电脑

注意&#xff1a;有些网站可能由于canvas跨域污染问题&#xff0c;无法使用toBlob&#xff0c;所以无法转换 开发者工具中&#xff0c;选中需要转换的canvas元素&#xff08;使其可以使用$0语法&#xff09; 控制台输入如下代码 $0.toBlob(function (blob) {var link document…

Window下CLion实现本机通过socket通信-C++

1.引言-什么是socket socket即套接字&#xff0c;用于描述地址和端口&#xff0c;是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。 sockets(套接字)编程有三种&#xff0c;流式套接字&#xff08;SOCK_STREAM&#xff09;&#xff0c;数据报套接字&#xff…

go语言开发Prometheus Exporter(DM数据库)

一、介绍 源码步骤基于dameng_exporter源码讲解&#xff0c;看完本篇文章可以直接进行二次开发。 dameng exporter的开源地址&#xff1a;https://github.com/gy297879328/dameng_exporter&#xff08;可直接对接prometheusgrafana 提供表盘&#xff09; 开发一个exporter 其…

Linux中的三类读写函数

文件IO和标准IO的区别 遵循标准&#xff1a; 文件IO遵循POSIX标准&#xff0c;主要在类UNIX环境下使用。标准IO遵循ANSI标准&#xff0c;具有更好的可移植性&#xff0c;可以在不同的操作系统上重新编译后运行。可移植性&#xff1a; 文件IO的可移植性相对较差&#xff0c;因为…

基于大模型零代码1小时完成国标数据分级分类近义词库构建及思考

1. 任务背景及困难分析 因项目要求&#xff0c;需要对国家标准国民经济行业分类-GB/T 4754-2017【1】进行近义词库的构建&#xff0c;时间非常紧&#xff0c;只给了很短时间进行处理&#xff0c;目标是构建一份中等粒度的行业近义词库。 搁在以前&#xff0c;可能需要点时…

<设计模式> 单例模式

单例模式 模式介绍&#xff1a;保证一个类仅有一个实例&#xff0c;并提供一个全局访问点来获取这个唯一的实例。主要解决&#xff1a;一个全局使用的类频繁地创建与销毁。关键代码&#xff1a;构造函数是私有的。 应用场景 数据库连接池&#xff1a;数据库连接是一种宝贵的…

Netty的源码分析和业务场景

Netty 是一个高性能、异步事件驱动的网络应用框架&#xff0c;它基于 Java NIO 构建&#xff0c;广泛应用于互联网、大数据、游戏开发、通信行业等多个领域。以下是对 Netty 的源码分析、业务场景的详细介绍&#xff1a; 源码概述 Netty 的核心组件&#xff1a;Netty 的架构设…

Linux 安装mysql-client-core-8.0

在Linux上安装mysql-client-core-8.0 安装流程 下面是安装mysql-client-core-8.0的步骤和相应的命令&#xff1a; 步骤1&#xff1a;更新系统软件源 我们首先需要更新系统的软件源&#xff0c;以确保我们能够获取到最新的软件包列表。使用以下命令更新软件源&#xff1a; …

Ansible——inventory 主机清单

1、inventory 含义 Inventory支持对主机进行分组&#xff0c;每个组内可以定义多个主机&#xff0c;每个主机都可以定义在任何一个或多个主机组内。 如果是名称类似的主机&#xff0c;可以使用列表的方式标识各个主机。 vim /etc/ansible/hosts [webservers] 192.168.20.11:222…

平凯星辰亮相 2024 中国国际金融展,发布银行交易明细查询白皮书

7 月 19 日至 21 日&#xff0c;备受瞩目的 2024 中国国际金融展&#xff08;以下简称金融展&#xff09;在北京国家会议中心隆重举办。作为中国乃至亚洲最大的金融科技展会&#xff0c;本届金融展以“数字金融引领未来&#xff0c;守正创新共筑金融新生态”为主题&#xff0c;…

vue单页面 全屏 使用 screenfull 实现全屏(左侧菜单栏隐藏)

vue单页面 全屏 使用 screenfull 实现全屏&#xff08;左侧菜单栏隐藏&#xff09;_vue在打开一个界面的时候隐藏侧边栏-CSDN博客