GO语言学习之-数组和切片(二)

手把手教你学simulink(43.2)--光伏发电场景示例:基于Simulink开发一个光伏发电系统仿真模型:采用神经网络控制策略进行优化 需求分析光伏发电系统(Photovoltaic System, PV)是将太阳能转换为电能的重要手段,广泛应用于分布式发电、并网发电和离网供电等领域。随着光伏技术的发展,如何提高光伏发电系统的效率和稳定性成为研究的重点。传统的控制策略(如PID控制器)虽然简单易实现,但在复杂工况下(如光照强度变化、温度波动等)难以达到最优性能。因此,引入先进的控制策略,如神经网络控制(Neural Network Control, NNC),可以显著提升系统的响应速度和鲁棒性。 阅读详情

之前,在一里面讲过关于数组以及切片的区别,都知道 数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。

 

引言:

例如:

func sumArray(number [5]int) int{
    sum := 0
    for _, value := range number{
        sum = sum + value
    }
    return sum
}

这个求和函数只能接受[5]int类型

package main

import (
	"fmt"
	"strconv"
)

func main() {

	arr := [5]int{1, 2, 3,4,5}

	sum := sumArray(arr)
	fmt.Println("sum = "+strconv.Itoa(sum))
}

func sumArray(count [5]int) int{
	sum := 0
	for _, value := range count{
		sum = sum + value
	}
	return sum
}

数组a中已经有三个元素了,我们不能再继续往数组a中添加新元素了,我们在向里面添加元素,就会编译不通过,

切片的本质:

    切片的本质就是对底层数组的封装,有三个信息:底层数组的指针、切片的长度(len)和切片的容量(cap)。

    例如:

     数组 a := [6]int{0, 1, 2, 3, 4, 5}

     切片 s := a[:3] 画图表示.

常用的方法:

切片判空 

        判断一个切片是否为空,不能使用 s == nil  而要使用 len(s) == 0 

赋值拷贝 

         

由于拷贝前后两个变量共享底层数组,所以对一个切片的修改会影响另一个切片的内容.

 

添加元素

    

通过打印结果可以看到,切片的底层数组肯定变化了,那么我们如何看到它变化的策略呢?

  首先,我们看一下源码:

   

删除元素

  切片没有直接删除元素这一具体方法,但是 我们可以曲线救国,使用append()来处理

未完待续....

 

【数字IC刷题】华为海思数字IC笔试题(3)详细解析版 阅读详情

相关推荐

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

部署ffmpeg用来处理视频的各种操作,如编码解码,格式转换,剪辑,处理实时视频流,音频流,加滤镜等

zhouwenxing666的博客 9032

Go入门 - 计算平均数

《学习Go语言》 编写一个函数用于计算一个float64类型的slice的平均数 package main import "fmt" func main() { xs := []float64{1,2,3,4,5,6,7} avg := average(xs) fmt.Printf("The average is %f", avg) } func average(xs []float...

zhengwish的专栏 4120

【CADARXC++】ObjectArx2023 C++ CAD二次开发环境配置笔记

从官网或第三方平台下载以下AUtoCAD2023、VisualStudio2019和ObjectArx2023安装时请注意安装顺序。

BIMCATIA的博客 1788

GO求平均值

package main import "fmt" func main(){ sum:=0.0 avg:=0.0 xs:="123243" switch len(xs){ case 0: avg=0 default: for _,v:=range xs{ ...

王洪洪的博客 644

antv x6 沿边图标循环动画实现

2.使用transition给边设置动画,利用complte方法实现循环动画。实现效果,如下图,边上存在两个图标,要求图标延边一直循环动画。1.注册一个自定义边,边上定义两个图标,并设置其初始位置。

lingliu0824的博客 3366

西门子1200数据块BD详解

定义 DB(Data Block)是用于存储用户数据的区域,分为两种类型:核心作用 四、DB块的访问方式 1. 全局DB访问 符号访问(优化块): 绝对地址访问(非优化块):(假设SetPoint占用2字节) 2. 背景DB访问 与FB关联后自动生成,通过FB调用时传递: 五、高级功能与注意事项 数据块的初始化运行时修改DB数据块的下载常见问题 通过合理使用DB块,可显著提升程序的可读性和可维护性。建议优先启用优化块访问并使用符号名编程。如何使用DB数据块 数据块用于存储程序数据。因此,数据块

weixin_51020122的博客 3429

go语言中的math库

Go语言的 math 包提供了许多数学函数和常量,涵盖了各种数学运算。以下是一些常用函数的介绍:Abs(x float64) float64:返回x的绝对值。Ceil(x float64) float64:返回不小于x的最小整数值。Cos(x float64) float64:返回x的余弦值(x以弧度为单位)。Exp(x float64) float64:返回自然指数e的x次幂。Floor(x float64) float64:返回不大于x的最大整数值。

jakelihua 1208

信创服务器(麒麟 V10 SP3)安装 NVIDIA GeForce RTX 5070 驱动

本文介绍了在麒麟V10 SP3系统上安装NVIDIA RTX 5070显卡驱动的详细步骤。首先需要关闭nouveau驱动,安装必要的编译环境和工具,确保内核版本与kernel-devel完全一致。最后运行NVIDIA驱动安装程序,关键选择包括启用DKMS支持、编译模块、禁用32位兼容和nouveau驱动。整个流程适用于海光CPU和Blackwell架构GPU的国产操作系统环境。

猿小白的博客 668

Go面试: 求出一个数组的和与平均值 (Golang经典编程案例)

案例 :求出一个数组的和与平均值,代码如下: package main import ( "fmt" ) func main() { var intArr = [...]int{3, -4, 9, 8, 12, 7} sum := 0 for _, val := range intArr { //累计求和 sum += val } //平均值保留到2位小数 fmt.Pr...

数据知道的博客 3万+

虚幻商城 Fab 免费资产自动化入库

Fab 商城的所有的免费资产自动化入库

一碗清深的博客 3626

安装Openclaw[本地自动化AI助手]至windows【WSL2模式】系统 Openclaw for Windows

摘要:OpenClaw最佳兼容OpenAI系列模型,推荐使用ChatGPT API(需Auth鉴权),避免K*mi等模型导致的信用卡风险。Windows系统需满足WSL2支持条件(Win11或Win10 1903+版本)。安装需导入自签名根证书或跳过浏览器安全警告,通过离线包部署WSL发行版。使用时通过clawtoken命令获取网关认证令牌,并在浏览器完成设备配对。提供代购ChatGPT Plus账号服务(¥140/月),详细操作指南需加微信群获取文件。(150字)

qq_27246521的博客 455

【Go语言学习系列06】Go基础语法(四):数组与切片

深入解析Go语言数组与切片的底层原理,通过实例讲解内存布局、扩容机制与性能优化技巧,掌握这两种核心数据结构的高效使用方法

GopherTribe的博客 1042

Android CPU调度优化完整分析 - 小白入门到精通

本文全面解析Android CPU调度优化技术,从硬件架构到内核实现。首先介绍ARM big.LITTLE架构的硬件拓扑和性能层级,包括大核、小核和DynamIQ技术。然后深入讲解CPU性能状态管理(P-states和C-states)和硬件计数器支持。内核层部分详细分析调度器架构,包括调度类层次结构和核心调度实体实现,重点剖析CFS调度器的虚拟运行时间计算、红黑树操作和PELT负载跟踪算法。最后探讨负载均衡触发条件和实现机制。全文循序渐进,为开发者提供完整的Android CPU调度优化知识体系。

xhxh510573522125的博客 152

Go语言学习实践 数组 字符串 切片

切片就是一种简化版的动态数组。因为动态数组的长度是不固定,切片的长度自然也就不能是类型的组成部分了。数组虽然有适用它们的地方,但是数组 的类型和操作都不够灵活,因此在Go代码中数组使用的并不多。而切片则使用得相当广泛。

发现问题,面对问题,分析问题,解决问题,总结问题 3343

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Go语言学习、切片定义和使用

一、切片的定义和使用 package main import "fmt" func main() { //数组定义 var 数组名 [元素个数] 数据类型 //切片定义 var 切片名 [] 数据类型 var s [] int fmt.Println(s) } 输出结果 [] 可以看到,我们在上面的程序中,将切片的定义和数组的定义做了对比,切片的定义时,不需要任何元素个数...

王帅的博客 7139

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Go语言学习 十五 数组和切片

本文最初发表在我的个人博客,查看原文,获得更好的阅读体验 数组是一种重要的数据结构,一旦声明长度就是固定的,实际中,更为灵活的切片可能使用更为广泛。切片底层实现就是使用的数组。 一 数组 数组是一种长度固定的数据结构,一旦声明,长度和元素的类型就不可变,并且在内存中是一段连续的块。数组中元素的个数即为数组的长度。数组的长度是一个int类型,可以使用内置函数len()来获取。另外,数组中的每一个元...

红嘴奎利亚雀 的专栏 453

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

go语言学习--数组、切片、map初始化操作和区别

Go语言中,数组是一种具有相同类型固定大小的一种数据结构,数组定义会定义长度 数组的声明语法如下: var 数组变量名 [元素数量]Typea:= [3]int{} //我们可以通过如下方式给数组赋值 a[0] = 1 a[1] = 2 a[2] = 3 //数组遍历 for i, v := range a { fmt.Printf("%d %d\n", i, v) } //...

aiwo035的博客 2228

go语言学习笔记5,数组,随机数,切片,切片的地址、扩容,截取

go语言的数组定义: 这是定义的一个一维数组,但是没有赋值给数组。 这也是定义的一个一维数组但是在定义的时候就依次赋值给数组了 这是go的计算数组的长度。 go中数组需要注意的是: 两个数组如果类型和元素个数相同可以赋值 数组名表示整个数组 数组名对应的地址就是数组第一个元素的地址 如果定义时用var arr [i]int 其中的i必须是一个常量,不能是一个变量 然后比较了一下Java中数...

盛难晨 2065

Go语言学习5-切片类型

Go语言切片类型

Huazie 1367

Go语言学习Day6:数组与切片

切片是对数组的封装,它提供了一个可动态扩展的序列。切片不存储任何数据,它**只是对底层数组的引用。**那么它与数组相同吗?显然,切片与数组是不同的,切片的长度是动态的,可以根据需要扩展或缩减。切片背后实际上是对数组的引用切片是引用类型。底层数组:每个切片都指向一个底层的数组,切片通过指针引用数组的一部分元素。长度(Length):切片的长度是它所包含的元素个数。可以通过内置的len函数获取。容量(Capacity):切片的容量是从其起始元素到底层数组末尾元素的个数。可以通过内置的cap函数获取。

2401_84003690的博客 1063

Go语言学习[6]_数组、切片

Go语言学习 道法自然 文章目录Go语言学习前言一、数组1.1定义数组1.2数组操作1.3 多维数组1.4 数组作为函数参数1.5 指针数组与数组指针1.5.1指针数组1.5.2数组指针二、切片2.1定义切片2.2操作2.3切片的扩充与拼接2.4切片与数组的关系总结 前言 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言语法简单,包含了类C语法。快速的编译时间,开发效率和运行效率高。组合的思想、无侵入式的接口。 一、数组 数组是

牛博通的博客 213

go语言学习----字符串、数组和切片的应用

字符串、数组和切片的应用  从字符串生成字节切片 假设 s 是一个字符串(本质上是一个字节数组),那么就可以直接通过 c := []bytes(s) 来获取一个字节的切片 c。另外,您还可以通过 copy 函数来达到相同的目的:copy(dst []byte, src string)。 同样的,还可以使用 for-range 来获得每个元素(Listing 7.13—fo

chen 6897

【Go语言学习】(五)数组和切片

本文主要介绍Go语言中数组(array)及它的基本使用。本文结合自己的学习情况,详细请参考李文周的博客 Array(数组) 数组的初始化 //1.直接赋值 a1 := [3]int{1, 2, 3} //2.根据数组长度自动推算出值 a2 := [...]int{1, 2, 3, 4, 5, 6, 6, 7, 8} //3.根据索引赋值 a3 := []int{...

weixin_39966701的博客 564

【go语言学习笔记】数组和切片

1.数组 go语言中也配有数组这种数据结构,它的定义方式类似java,每一种定义都是一种类型,比如: var arr [50]int和var arr [100]int,他们分别是[50]int类型和[100]int类型。 可以使用迭代器来遍历数组。 demo: package main import "fmt" func main() { // 数组,同一个类型的集合 var arr [5...

Code杂货店 312

go语言学习之数组、map

任何语言都提供了数组这一特殊的存储结构,各有各的好处。go语言的数组和常规编程语言的数组差不多,只不过它还提供了一个称之为切片的容器(你可以把它理解为可变长的数组),切片的定义方法为:slice []int,仔细看跟数组定义的方式一样,只不过是它没有确定的大小,go语言中称这种变量为切片。切片我们需要了解三个东西:prt是一个指针,存储当前对切片操作的最后一次位置或者当前位置,len是切片的长度,...

lzh 5433

go语言学习总结之数组和切片

数组 1、数组在初始化的时候,需要指定大小,若不指定则会进行自动推算,而且数组大小是不可变的。 2、数组在作为函数的入参时,需要明确指定数组大小,并且传递方式是值传递。 示例: //数组声明和初始化 a := [...]int{1,2,3}; //这里需要注意,如果这样声明:a := []int{1,2,3};则a为切片不是数组 b := [5]int{1,2,3,4,5}; //作为函数函数传...

李清的博客 222
上一篇: GO之认证与授权
下一篇: go与java实现冒泡排序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值