Go语言学习笔记 --- 数组的使用

go学习笔记(持续更新) & 逻辑AND运算符,如果两边的操作数都是true,则条件true,否则为false (A&&B)为false。|| 逻辑OR运算符, 如果两边的操作数有一个true,则条件true,否则为false (A||B)为true。= 检查左边值 是否大于等于右边值,如果是返回true 否则返回false (A>=B) 为false。= 检查两个值是否不相等,如果不相等返回true 否则返回false (A!== 检查两个值是否相等,如果相等返回true 否则返回false (A==B) 为false。 阅读详情

学习笔记根据 无闻 go语言基础教程 整理

数组

  • 定义数组的格式: var <varName> [n]<type> ,前提:n >= 0
  • 数组程度也是类型的一部分,因此具有不同长度的数组为不同类型
  • 注意区分指向数组的指针和指针数组
  • 数组在Go中为值类型
  • 数组之间可以使用 == 或 != 进行比较,但不能比较大小
  • 可以使用new来创建数组,此方法返回一个指向数组的指针
  • Go 支持多维数组
  • 示例代码:
package main

import (
    "fmt"
)

func main() {
    test1()
    test2()
    test3()
    test4()
    test5()
    test6()
    test7()
    test8()
    test9()
    test10()
    test11()
    test12()
}

func test1() {
    var a [2]int // 长度为2的int数组
    var b [1]int

    // 不能直接复制 b = a 这是不合法的,他们长度不同,不能直接赋值
    fmt.Println(a) // [0 0] // 字面值不够,则会用零值来补充
    fmt.Println(b) // [0]
}

// 相同长度类型的可赋值
func test2() {
    // var a [2]int{1,2} // 不能这样用,错误的定义和赋值
    a := [2]int{1,1}
    var b [2]int
    b = a
    fmt.Println(a) // [1,1]
    fmt.Println(b) // [1,1]
}

// 类型不同,无法赋值
func test3() {
    a := [2]string{"1","2"}
    b := [2]int{}

    // b = a // 错误的赋值, 不同类型无法转换,报错

    fmt.Println(a) // [1 2]
    fmt.Println(b) // [0 0]
}

// 使用索引
func test4() {
    a := [5]int{1:1,2} // 指定索引为1的值为1,其后一项为2,其余零值补充
    b := [5]int{4:1} // 指定索引为4的,也就是第五号元素为1,其余零值补充
    fmt.Println(a) // [0 1 2 0 0]
    fmt.Println(b) // [0 0 0 0 1]
}

// 使用...和索引来指定数组
func test5() {
    a := [...]int{1,2,3,4,5} // 使用...来定义一个已知长度的数组
    b := [...]int{0:1, 1:11, 2:22}

    fmt.Println(a) // [1 2 3 4 5]
    fmt.Println(b) // [1 11 22]
}

// 指向数组的指针
func test6() {
    a := [...]int{1,2,3}
    var p *[3]int = &a // p 是指向数组的指针
    fmt.Println(p) // &[1 2 3]
}

// 指针数组
func test7() {
    x, y := 1,2
    a := [...]*int{&x, &y}
    fmt.Println(a) // [0xc0420441d0 0xc0420441d8] // 说明 a 是一个指针数组
}

// 数组之间可以使用 == 或者 != 的比较, 但不可以比较大小 ; 比较前提是:长度,类型相同
func test8() {
    a := [2]int{1,2}
    b := [2]int{1,3}
    c := [2]int{1,2}

    fmt.Println(a == b) // false
    fmt.Println(a == c) // true
}

// 使用new关键字会返回一个指向数组的指针
func test9() {
    p := new([3]int)
    fmt.Print(p) // &[0 0 0]
}

// 定义一个第一维长度为2的,第二维长度为3的 二维数组
func test10() {
    a := [2][3]int{
        {1,1,1},
        {2,2,2}}
    fmt.Println(a) // [[1 1 1] [2 2 2]]
}

// 第一维度数组可以使用...来计算, 注意定义的数组长度,不能溢出
func test11() {
    a := [...][5]int{
        {1,2,3},
        {2,2,2,2}}
    fmt.Println(a) // [[1 2 3 0 0] [2 2 2 2 0]]
}

// 冒泡排序
func test12() {
    a := [...]int{5,2,3,1,4}
    fmt.Println(a)
    num := len(a)
    for i:=0; i < num; i++ {
        for j := i+1; j<num; j++ {
            if a[i] < a[j] {
                temp := a[i]
                a[i] = a[j]
                a[j] = temp
            }
        }
    }
    fmt.Println(a)
    /*
    [5 2 3 1 4]
    [5 4 3 2 1]
    */
}
先进半导体材料与器件Chapter3 Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/... 阅读详情

相关推荐

搭建PX4开发系统(Ubuntu 22.04)

本文是《从零开始学 PX4 无人机开发》系列第二篇,适合开发者在 Ubuntu 系统下快速搭建 PX4 编译与仿真环境,支持 QGroundControl、Gazebo、MAVSDK 等完整工具链。

qq_15856721的博客 4222

Go语言数组实现

package array import ( "errors" "fmt" ) type Array struct { data []interface{} //存储数组数据 length uint //数组当前长度 } func NewArray(capacity uint)*Array{ if capacity == 0 { return nil } ...

码墨 865

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

beyond951的博客 7334

初识go语言之 数组与切片(创建,遍历,删除,插入,复制)

1、数组 go语言的数组与其他语言的数据定义基本类似:大小确定,内存连续,可以随机访问。数组的元素使用操作符[]来索引。首元素是array[0],最后一个元素是array[len(array)-1]。 1.1数组的创建 数组的创建有下面三种方式 [length]Type [N]Type{value1, value2, ..., valueN} [...]Type{val

fm_VAE的专栏 2万+

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3927

AGX Orin 部署PyTorch与Torchvision 2026避坑指南

本文提供了2026年在AGX Orin开发板上部署PyTorch与Torchvision的详细避坑指南。针对ARM64架构和JetPack 6.2系统,重点解决了Python 3.10环境配置、官方wheel包安装、torchvision源码编译等关键步骤,并分享了常见问题解决方案和性能优化技巧,确保深度学习环境稳定运行。

sky77的博客 753

go基础知识体系

1.数据操作。包括基本数据类型的定义以及操作,运算,切片等。 2.类的定义。 3.

hangeqq685042的专栏 1478

【微服务】SpringBoot 对接飞书审批流程使用详解

SpringBoot 对接飞书审批流程使用详解

congge_study的博客 3771

golang之数组

1.声明数组 var arr [5]int 2.数组长度 arrLen := len(arr) 3.数组第一个元素 arr[0] 4.数组最后一个元素 last := arr[arrLen-1] 5.遍历数组 for key, value := range arr { fmt.Printf("key:%d,value:%d\n", key, value) } ...

无 1683

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3118

手把手教你学SIMULINK模块库文件专栏-From Workspace 模块详解

模块是 Simulink 中的一个信号源模块,用于从 MATLAB 工作区加载数据作为输入信号。该模块允许用户将预先在 MATLAB 中生成的数据(如时间序列、矩阵或结构体)导入到 Simulink 模型中,从而实现更灵活的信号输入和仿真控制。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常灵活的工具,适用于需要从 MATLAB 工作区加载数据的各种场景。

MHD0815的博客 636

【Golang 基础】Go 语言的数组

Go 语言中的数组 (示例代码) 定义数组的格式:var <arrayName> [n]<type>, 其中 n >= 0; package basic import "fmt" func DeclaratArray(){ // 定义指定长度的数组 var arr1 [5]int...

weixin_33794672的博客 203

计算机专业保研攻略(一):个人定位与院校推荐(必看干货)

写在最前 又是一年保研季,作为过来人,我深知保研就是一场信息战。在保研过程中,需要注意的信息太多了,最初我也因为经验不足,走了不少弯路。我写下这篇博客,希望能帮助更多有需要的同学。 怎样做好保研信息分析 我想举几个发生在我身边真实的例子: A同学推免排名不如B同学,但A保研去向比B同学好很多; C同学在年级里成绩并不算突出,但他拿到了最好的offer; D、E同学纷纷圆梦北大、浙大等名校,但是他们的成绩似乎并不突出; F同学取得了目标院校夏令营offer,但没有拿到本校推免资格; G同学认为自己拿不到推免

乔卿的博客 8394

go语言基础语法,go语言学习超详细笔记

类型常用符号算术+ - * / %比较==!逻辑`&&赋值位运算`&其他++ --(只能单独使用)import fmtvar nums [10]int/'初始化数组,默认元素都为0'//'如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度:'//'如果设置了数组的长度,我们还可以通过指定下标来初始化元素:'/// 将索引为 1 和 3 的元素初始化/'将50.0赋值为balance[4]'//'访问'/// Step 1: 创建数组。

2503_91344087的博客 779

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

go语言学习笔记

go最少有main()函数func 函数名(函数参数)函数返回类型{}/* 定义局部变量 *//* 调用函数并返回最大值 */fmt.Printf( "最大值是 : %d\n", ret )/* 函数返回两个数的最大值 *//* 定义局部变量 */} else {

weixin_49318663的博客 324

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

关于《Go语言学习笔记》这本书

#关于《Go语言学习笔记》这本书 书如其名,真的算是一本笔记,书中大量篇幅都是代码块,文字介绍较少,基础理论内容也很少, 更多的是对某一些特性和一些用法上做实践,并且如果你细读的话也会发现一些写错的地方。 如果非要嗑这本书 建议先看一遍**《Go by Example 中文版》**,对基本使用和语法有一定了解后再嗑 笔者下卷部分并没有继续看,因为感觉还不到看源码的时候,所以再深造一段时间在回来看一下。 这里粗略的整理一下知识点,没时间看这本书,可以看一下笔者整理的部分,并不全,也只是针对笔者感兴趣的地方进行

xiao4-800K的博客 1321

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

go语言学习笔记7,结构体与map、函数参数,指针的定义和使用,指针和数组、切片、结构体,多级指针

结构体作为map中的value 我们使用make开辟了一个map的空间,并且int为键结构体的student为值。 我们创建了101和102并且给student赋值。 如果想要删除,就用delete方法删除m中的键。 这个value的类型是一个切片,一个键中的value可以有多个值可以用append方法添加值。 结构体作为函数参数 首先我们使用自定义类型创建了一个stu,然后作为函数参数传过...

盛难晨 848

GO语言学习笔记——详细版

GO语音个人学习笔记——详细版

qq_41201689的博客 1433

Go学习笔记:基础语法4

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。通过索引下标取值,索引从0开始for range获取初始化的时候赋值通过索引下标赋值一定要注意,,在编译阶段就决定了如果觉的每次写[3]int有点麻烦,你可以为[3]int定义一个新的类型。如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==和!)来判断两个数组是否相等,只有当两个数组的所有元素都是相等的时候数组才是相等的,不能比较两个类型不同的数组,否则程序将无法完成编译。

weixin_47113960的博客 971

Go语言笔记

6、字符串,Go语言中的字符串以原生数据类型出现,类似(int/bool/float32等)。默认编码使用UTF-8。1、函数外的每个语句都必须以关键字开始(var/const/func等)6、字符串转义符,使用反引号内部是什么就输出什么,不用加转义符。4、const定义,iota从0开始,每增加一行,自动+1。5、八进制&十六进制,注:Go语言无法直接定义二进制。3、_ 多用于占位,表示忽略值。2、:= 只能在函数内使用。

wangMaryann的专栏 641

GO语言学习笔记-数据篇 Study for Go ! Chapter four - Data

持续更新 Go 语言学习进度中 ...... 2023-03-14 GO语言学习笔记 系列部分???? 已完结!! 对于刚刚接触 golang 来说,经过这段时间的学习,对于 GO这门语言已经有了初步的认识。 博主接下来会继续学习 golang 的更多内容,持续更新中...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type GO语言学习笔记-表达式篇...

Mercury_cc的博客 235

2024年大数据最全Go基础学习笔记(一):基础语法、内建容器、面向对象(2)

2)switch。

2401_84182906的博客 81

Go语言学习笔记

在Example1中,当我们进行第一次show操作时,打印的是初始化之后的s对象。在进行修改name操作后,s对象被拷贝到Setstuname方法中,stu的变量生命周期也只限于这一个方法内,所以我们在方法内的操作只会随着方法调用完而消失。而在Example2中,进行修改name操作后,传入方法的是主函数中s的地址,赋值给stu对象,所以进行的所有修改操作都会更改s的值。func 后面跟的()内的值意为该方法是student类的方法,s即为一个对象,后面的内容与go语言函数的定义相同。

weixin_62132578的博客 1596

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

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

GopherTribe的博客 1043

Go语言学习笔记2——数组和Slice

在任何一门语言里,数组应该都是非常基础的类型了,使用率当然也应该是很高的。go不但提供了数组,而且还在数组这个类型之上加了一层包装,这个包装也就是slice。         go的数组变量(也就是数组名)是真真实实的数组,而不是一个指向数组内存起始位置的指针,也不能和同类型的指针进行转化,这一点严重不同于C语言; C语言主要还是类型系统太弱了,因此很多的数据最终都退化为指针的方式来访问。

可乐爱上咖啡 2万+

Go语言学习笔记—golang基础语法

golang基础语法

qq_39280718的博客 3278
上一篇: 企业管理理论综述与实践 — 绩效
下一篇: Go语言学习笔记 --- slice切片
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值