首页 > 其他分享 >Go语言--复合类型之指针与数组

Go语言--复合类型之指针与数组

时间:2024-07-07 14:55:48浏览次数:25  
标签:初始化 语言 -- int 数组 类型 Go 指针

分类

在这里插入图片描述

指针

指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。Go 语言对指针的支持介于 Java 语言和 C/C++语言之间,它既没有想 Java 语言那样取消了代码对指针的直接操作的能力,也避免了 C/C++语言中由于对指针的滥用而造成的安全和可靠性问题。

基本操作-和C相同

在这里插入图片描述
保存某个变量的地址,需要指针类型*int 保存int的地址,**int 保存 *int 地址
在这里插入图片描述
在这里插入图片描述

Go语言虽然保留了指针,但与其它编程语言不同的是:

  • 默认值 nil,没有 NULL 常量
  • 操作符"&”取变量地址,“*”通过指针访问目标对象
  • 不支持指针运算,不支持"->“运算符,直接用”.”访问目标成员,同样的不能操作没有合法指向的指针变量。

new

动态分配空间
在这里插入图片描述

  • 同样的,也可以自动推导类型q := new(int)
    注意:go语言无需向c++语言一样,动态申请的空间还需要自己手动释放。go语言中,我们只需使用new()函数,无需担心其内存的生命周期或怎样将其删除,因为Go语言的内存管理系统会帮我们打理一切。

普通变量做函数参数

在这里插入图片描述

指针做函数参数

在这里插入图片描述
在这里插入图片描述
这些都和C相同。

数组

数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element)一个数组包含的元素个数被称为数组的长度。
数组长度必须是常量,且是类型的组成部分。[2]int 和[3]int 是不同类型。
语法var id [50]int
在这里插入图片描述

  • 操作数组元素,是通过0-len()-1的下标进行操作的,下标可以是常量也可以是变量。
  • 数组初始化—全部初始化 var a [5]int=[5]int{1,2,3,4,5}
  • 自动推导类型 b:=[5]int{1,2,3,4,5}
  • 数组初始化—部分初始化,没有初始化的元素自动赋值为0
  • 指定某个元素初始化 d := [5]int{2: 10, 4: 20}
    在这里插入图片描述

二维数组

在这里插入图片描述

  • 初始化,全部初始化以及部分初始化

在这里插入图片描述

数组比较和赋值

只支持==以及!=其他的不支持,数组比较是比较是不是每一个元素都一样,2个数组之间进行比较,要保证数组类型一样。注意[]中间的数字也算类型的一部分
同类型的数组可以赋值。
在这里插入图片描述

随机数

如果种子参数一样,每次运行程序产生的随机数都一样
在这里插入图片描述

  • 以当前时间作为种子参数
    在这里插入图片描述
  • 可以通过Intn()来限制随机数的范围
    在这里插入图片描述

冒泡排序

在这里插入图片描述

在函数间传递数组

在这里插入图片描述

标签:初始化,语言,--,int,数组,类型,Go,指针
From: https://blog.csdn.net/m0_73537205/article/details/140082047

相关文章

  • GraalVM简介及使用
    在本文中,我们将回顾GraalVM是什么、它是如何工作的,以及即时(JIT)编译和提前(AOT)编译之间的区别?GraalVM是一种高性能运行时,为用Java和其他语言编写的应用程序提供了显着的优势。它由Oracle开发,通过利用高级优化和独特的架构,可以更快、更高效地运行应用程序。1.......
  • 前端随手记第三天
    1.HTML<fieldset>name属性定义和用法:name属性规定fieldset的名称。name属性用于在JavaScript中引用元素,或者在表单提交之后引用表单数据。语法:<fieldsetname="text"> <!DOCTYPEhtml><html><head> <meta charset="utf-8"> <title>菜鸟教......
  • 20240705
    T1NFLSOJP5030最小表示考虑两个串本质相同的条件,发现如果计算出每一位上的字母距离它上一次出现的距离\(dis_i\),那两个串本质相同等价于所有\(dis_i\)相同。注意到这个东西只和相对位置有关,所以只需要先对原串求一遍\(dis\)数组,然后对这个\(dis\)数组后缀排序一下,求出......
  • 选择结构
    选择结构if单选择:if(布尔表达式){//true执行的语句}if双选择:if(布尔表达式){//true执行的语句}else{//false执行的语句}if多选择:if(布尔表达式1){//true执行的语句}elseif(布尔表达式2){//true执行的语句}elseif(布尔表达式3){//true执行......
  • 24-暑假软件工程周报(1)
    7-1-7-7第一周工作时间:7月1日14:00-17:00工作内容:担任组长完成课题规划,本人分到PTA课题7-57-67-77-13。完成课题7-5,配置恢复vscode中C++编程环境,进行课题7-5测试。测试结果:通过 工作时间:7月2日14:00-17:0019:00-20:30工作内容:进行课题7-6,复习数据结构课程散列......
  • let 声明的变量,只在代码块内有效
    {leta=10;varb=1;}a//ReferenceError:aisnotdefinedb//1for循环的计数器,就很适合使用let命令。for(leti=0;i<10;i++){//...}console.log(i);//ReferenceError:iisnotdefined上面代码中,计数器i只在for循环体内......
  • seo外链发布:如何选择合适的外链发布平台?
    在进行seo优化的过程中,外链发布是一个非常重要的环节。选择合适的外链发布平台可以帮助我们提升网站的权威性和排名。那么,如何选择合适的外链发布平台呢?下面为您解答。1.网站的权威性选择外链发布平台时,首先要考虑的是该网站的权威性。一个权威性高的网站,其外链对于提升网站的......
  • 24-暑假软件工程日报(7_5)
    工作时间:7月5日8:00-11:00 14:00-17:00 工作内容:完成组长大程序验收学习Oracle数据库架构代码:#include<fstream>#include<iostream>#include<stdio.h>#include<stdlib.h>usingnamespacestd;voidmenu(){cout<<"************菜单********......
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
    进入题目注册一个账号登录进去后上传一个文件发现只能上传图片下载删除时分别抓包发现在download.php里下载,在delete.php处删除发现filename参数,有任意文件下载漏洞下载download.php,delete.php目录遍历在delete.php里发现class.phpdb=$db;}publi......
  • 24-暑假软件工程日报(7_7)
    工作时间:7月7日14:00-17:00  工作内容:基本完成第二阶段大程序构建代码:#include<cstring>#include<iostream>#include<list>#include<math.h>#include<queue>#include<stack>#include<stdio.h>#include<stdlib.h>#include&l......