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 模型相关,或许涉及到模型的开发、训练或应用等方面。 项目地…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...