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选项是切片的方式,所以传输会异常
相关文章:
Go语言的数据结构
数据结构 数组 支持多维数组,属于值类型,支持range遍历 例子:随机生成长度为10整数数组 package main import ("fmt""math/rand" ) // 赋值 随机获取100以内的整数 func RandomArrays() {var array [10]int //声明var…...
python_在sqlite中创建表并写入表头
python_在sqlite中创建表并写入表头 import sqlite3def write_title_to_sqlite(tableName,titleList,dataTypeGroupsList,database_path):conn sqlite3.connect(database_path)# 创建游标cursor conn.cursor()#MEMO 长文本#create_table_bodycreate_table_body "序号 …...
1.c#(winform)编程环境安装
目录 安装vs创建应用帮助查看器安装与使用( msdn) 安装vs 安装什么版本看个人心情,或者公司开发需求需要 而本栏全程使用vs2022进行开发c#,着重讲解winform桌面应用开发 使用***.net framework***开发 那先去官网安装企业版的vs…...
图中的最短环
2608. 图中的最短环 现有一个含 n 个顶点的 双向 图,每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接,并且不存在与自身相连的顶…...
安装依赖 npm install idealTree:lib: sill idealTree buildDeps 卡着不动
我一直怀疑是网络问题,因为等了很久也能安装成功,就是时间比较长,直到现在完全受不了了,决定好好整治下这个问题! 1、执行命令 npm config get userconfig 查看配置文件所在位置,将其删除。 2、执行 n…...
LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略
LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略 导读:2024年7月23日,Meta重磅推出Llama 3.1。本篇文章主要提到了Meta推出的Llama 3.1自然语言生成模型。 背景和痛点 >> 过去开源的大型语言模型在能力和性能上一…...
如何实现一个大模型在回答问题时同时提供相关内容链接
通义生成 为了让大模型在回答问题时能够提供相关内容链接,通常采用的方法是结合检索增强生成(Retrieval-Augmented Generation, RAG)的技术。这种方法可以让大模型在生成答案的同时,从外部知识源中检索相关信息,并将这…...
<数据集>玉米地杂草识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:9900张 标注数量(xml文件个数):9900 标注数量(txt文件个数):9900 标注类别数:2 标注类别名称:[Maize, Weed] 序号类别名称图片数框数1Maize8439125142Weed959231048…...
vue3中动态添加form表单校验
<template><div><div v-for"(formData, index) in forms" :key"index"><u-form :model"formData" :rules"rules" ref"formRefs"><u-form-item label"用户名" prop"username"…...
Java面试八股之什么是声明式事务管理,spring怎么实现声明式事务管理?
什么是声明式事务管理,spring怎么实现声明式事务管理? 声明式事务管理是一种编程范式,它允许开发人员通过声明性的配置或注解,而不是硬编码事务处理逻辑,来指定哪些方法或类应该在其上下文中执行事务。这种方法将事务…...
springboot 缓存预热的几种方案
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。 这里我给大家总结几个缓存预热的方案。 方案1:使用启动监听事件实现缓存预热 可以使用 ApplicationListener 监听 ContextRefreshed…...
谷粒商城实战笔记-62-商品服务-API-品牌管理-OSS整合测试
文章目录 一,Java中上传文件到阿里云OSS1,整合阿里云OSS2,测试上传文件 二,Java中整合阿里云OSS服务指南引言准备工作1. 注册阿里云账号2. 获取Access Key3. 添加依赖 实现OSS客户端1. 初始化OSSClient2. 创建Bucket3. 上传文件4.…...
linux c 递归锁的介绍
递归锁的递归特性确实只是对于持有锁的线程。当一个线程获取了递归锁后,它可以多次重复获取该锁,而不会导致自身阻塞或死锁。这是递归锁的重要特点,它允许同一个线程在已经持有锁的情况下,再次获取相同的锁。 然而,对…...
React好用的组件库有哪些
React好用的组件库有很多,它们各自具有不同的特点和优势,适用于不同的开发场景和需求。以下是一些受欢迎的React组件库及其特点: Material-UI(现更名为MUI) 特点:这是一个开源的React组件库,实…...
简单快捷!Yarn的安装与使用指南
Yarn 是由 Facebook (现 Meta) 开发的包管理工具。 今天,我将介绍如何使用 Yarn。 目录 Yarn 的官方网站 关于安装 版本确认 开始一个新项目(创建 package.json 文件) 安装软件包 升级包 运行脚本 执行包的命令 卸载包 总结 Yarn 的…...
【Django】前端技术-网页样式表CSS
文章目录 一、申明规则CSS的导入方式行内样式内部样式外部样式 二、CSS的选择器1. 基本选择器标签选择器: 选择一类标签 标签{}类选择器 class: 选择所有class属性一致的表情,跨标签.类名{}ID选择器:全局唯一 #id名{} 2.层次选择器…...
openssl req 详解
一、openssl req 该命令用于创建和处理PKCS#10格式的证书请求(certificate requests CSRs),也可以用来创建自签名证书( self-signed certificates)来当作根证书(root CAs)使用 -new 该选项用来…...
mysql各种锁总结
mysql全局锁 读锁(共享锁) 阻止其他用户更新,但允许他们读取数据。 写锁(排他锁) 阻止其他用户读取和更新数据。 全局锁场景:进行数据库备份 数据库备份 背景:备份数据肯定要保证数据一致…...
SpringSecurity--DelegatingFilterProxy工作流程
什么是 DelegatingFilterProxy? DelegatingFilterProxy 是 Spring 提供的一个特殊的过滤器,它起到了桥梁的作用,可以让你在 Spring 容器中管理 Servlet 容器中的过滤器。 为什么需要 DelegatingFilterProxy? 通常情况下&#x…...
GitHub每日最火火火项目(7.27)
1. 项目名称:meta - llama / llama3 项目介绍:这是 Meta Llama 3 的官方 GitHub 站点。目前尚不清楚该项目的具体功能和特点,但从名称推测,可能与 Llama 3 模型相关,或许涉及到模型的开发、训练或应用等方面。 项目地…...
OpenClaw智能书签:用nanobot自动归类收藏网页内容
OpenClaw智能书签:用nanobot自动归类收藏网页内容 1. 为什么需要智能书签 作为一个每天要浏览大量技术文档和行业资讯的开发者,我发现自己陷入了"收藏即学会"的陷阱。Chrome书签栏里堆满了未分类的链接,Notion数据库里散落着零碎…...
PWM技术原理与电机调速应用详解
PWM技术原理与电机调速应用详解1. PWM基础概念解析1.1 脉冲宽度调制定义PWM(Pulse Width Modulation)即脉冲宽度调制,是一种通过调节脉冲信号的宽度(占空比)来实现能量控制的电子电力技术。该技术在直流电机调速、开关电源、逆变器等电力电子领域有广泛应用。1.2 脉…...
Kazam vs OBS:Ubuntu 24.04 屏幕录制工具对比与选择指南
Kazam vs OBS:Ubuntu 24.04 屏幕录制工具深度评测与实战选择 在数字内容创作爆发的时代,屏幕录制已成为游戏实况、在线教学、产品演示的标配技能。对于Ubuntu 24.04用户而言,Kazam和OBS Studio这两款开源工具常被拿来比较——前者以轻量简洁著…...
3分钟快速上手:免费高效的Elasticsearch可视化工具Elasticvue终极指南
3分钟快速上手:免费高效的Elasticsearch可视化工具Elasticvue终极指南 【免费下载链接】elasticvue Elasticsearch gui for the browser 项目地址: https://gitcode.com/gh_mirrors/el/elasticvue 你是否曾经为复杂的Elasticsearch集群管理而烦恼?…...
QuickRecorder高效解决方案:从基础到进阶的macOS录屏全指南
QuickRecorder高效解决方案:从基础到进阶的macOS录屏全指南 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHu…...
解锁AMD锐龙隐藏性能:SMUDebugTool深度调校实战指南
解锁AMD锐龙隐藏性能:SMUDebugTool深度调校实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitc…...
大数据运维 | 项目一:大数据分布式集群搭建全攻略
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 前言 作为一名大数据运维工程师,你是否遇到过这样的问题: 问题场景描述1机器A可正常上网,但机器B无法连接网…...
别死记硬背了!用Python的NumPy库,5分钟搞定线性代数里的矩阵运算(附代码)
用Python的NumPy库轻松玩转线性代数:矩阵运算实战指南 线性代数作为现代科学与工程的基石,在机器学习、计算机图形学、量化金融等领域无处不在。但传统教材中抽象的数学符号和繁琐的手工计算,往往让学习者望而生畏。今天,我们将用…...
深度学习驱动的图像去雾:2023年最新算法与应用实践
1. 图像去雾技术的现状与挑战 清晨打开窗户,如果外面雾气弥漫,我们往往会等雾散了再拍照。但计算机视觉系统可没这个耐心——自动驾驶汽车必须实时看清路况,无人机巡检得在雾天正常工作。这就是图像去雾技术存在的意义。2023年,随…...
ai辅助开发:让快马平台为你的arduino项目注入智能决策与学习能力
AI辅助开发:让快马平台为你的Arduino项目注入智能决策与学习能力 最近在做一个智能垃圾分类的小项目,用Arduino控制各种传感器和舵机来实现自动分类。这个过程中发现,手动编写所有判断逻辑和阈值调整特别耗时,于是尝试用InsCode(…...
