php数组在golang,go语言数据类型-数组(array)

数组是Go语言编程中最常用的数据结构之一。顾名思义,数组就是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。

在Go语言中数组是一个值类型(value type)。是真真实实的数组,而不是一个指向数组内存起始位置的指针,也不能和同类型的指针进行转化,这一点严重不同于C语言。所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。

定义方式如下

var arr [n]type    n表示数组长度,type表示数组存储类型。

在Go语言中,数组长度在定义后就不可更改,在声明时长度可以为一个常量或者一个常量表达式(常量表达式是指在编译期即可计算结果的表达式)。数组的长度是该数组类型的一个内置常量,可以用Go语言的内置函数len()来获取。

arrLength := len(arr)

常规声明方法

var a [5]byte //长度为5的数组,每个元素为一个字节

var b [2*N] struct { x, y int5 } //复杂类型数组

var c [5]*int // 指针数组

var d [2][3]int //二维数组

var e [2][3][4]int //等同于[2]([3]([4]int))

3.1 先声明再初始化

a = {'1','2','3'}

d = {{1,2,3},{4,5,6}}

3.2 直接声明并初始化

a := [3]byte{'1', '2', '3'} //声明并初始化一个长度为3的byte数组

a := [...]byte{'1', '2', '3'} //可以省略长度而采用`...`的方式,Go会自动根据元素个数来计算长度

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

d := [2][3]int{{1,2,3},{4,5,6}} //如果内部的元素和外部的一样,那么上面的声明可以简化,直接忽略内部的

类型

3.3 例如:

package main

import(

"fmt"

)

func main(){

var arr1 [5]int

arr2 := [5]int{1, 2, 3, 4, 5} //指定长度为5,并赋5个初始值

arr3 := [5]int{1, 2, 3} //指定长度为5,对前3个元素进行赋值,其他元素为零值

arr4 := [5]int{4: 1} //指定长度为5,对第5个元素赋值

arr5 := [...]int{1, 2, 3, 4, 5} //不指定长度,对数组赋以5个值

arr6 := [...]int{8: 1} //不指定长度,对第9个元素(下标为8)赋值1

fmt.Println(arr1, arr2, arr3, arr4, arr5, arr6)

}    输出结果为:

[root@localhost mygo]# go run test.go

[0 0 0 0 0] [1 2 3 4 5] [1 2 3 0 0] [0 0 0 0 1] [1 2 3 4 5] [0 0 0 0 0 0 0 0 1]

可以使用数组下标来访问数组中的元素。数组下标从0开始,len(arr)-1则表示最后一个元素的下标

4.1 计算数组长度

通过go语言内置函数len

例如

package main

import(

"fmt"

)

func main(){

arr := [...]int {9: 1}

fmt.Println(arr)

fmt.Println(len(arr))

}    输出结果为:

[root@localhost mygo]# go run test.go

[0 0 0 0 0 0 0 0 0 1]

10

4.2 普通访问方式

for i := 0; i < len(arr); i++ {

fmt.Println(i, arr[i])

}

例如:

package main

import(

"fmt"

)

func main(){

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

for i := 0; i < len(arr); i++{

fmt.Printf("arr[%d]=%d\n", i, arr[i])

}

}    打印结果如下:

[root@localhost mygo]# go run test.go

arr[0]=1

arr[1]=2

arr[2]=3

arr[3]=4

arr[4]=5

4.3 通过range访问

for i, v := range arr {

fmt.Println(i, v)

}    range具有两个返回值,第一个返回值i是元素的数组下标,第二个返回值v是元素的值。

例如:

package main

import(

"fmt"

)

func main(){

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

for i, v := range(arr) {

fmt.Printf("arr[%d]=%d\n", i, v)

}

}

打印结果如下:

[root@localhost mygo]# go run test.go

arr[0]=1

arr[1]=2

arr[2]=3

arr[3]=4

arr[4]=5

例如:

package main

import(

"fmt"

)

func modify(arr [5]int){

arr[0] = 10

fmt.Println("In modify(), arr values:", arr)

}

func main(){

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

modify(arr)

fmt.Println("In main(), arr values:", arr)

}    输出结果为:

[root@localhost mygo]# go run test.go

In modify(), arr values: [10 2 3 4 5]

In main(), arr values: [1 2 3 4 5]

**********************************************************************************************

转载请注明出处:http://blog.csdn.net/jesseyoung/article/details/36058095

**********************************************************************************************

有疑问加站长微信联系(非本文作者)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php session 反序列化,PHP SESSION反序列化本地样例分析

PHP SESSION反序列化本地样例分析0X00漏洞原因主要原因是&#xff1a; ini_set(‘session.serialize_handler’, ‘php_serialize’);ini_set(‘session.serialize_handler’, ‘php’);两者处理session的方式不同。0X01漏洞分析如果在PHP在反序列化存储的$_SESSION数据时使用的…

php 标题去重复思想,WordPress网站发布文章时如何防止发布重复标题的文章?

事实上&#xff0c;所有插件后端代码都等同于将代码片段添加到functions.php中&#xff0c;functions.php代码片段可以生成插件&#xff0c;然后插件可以自然地集成到functions.php中。插件主要易于管理&#xff0c;但也增加了静态资源请求的数量。如果您知道如何处理这些请求&…

php前端介绍,Web前端的开发前景介绍

“路漫漫其修远兮&#xff0c;吾将上下而求索”&#xff0c;这句出自《离骚》。虽然端午已过&#xff0c;但是还是不影响一个程序员想表(zhuang)达(boy)自己此刻心情的冲动。偶然路过同事旁边&#xff0c;不(tou)小(kan)心看到他加的一个群&#xff0c;在问&#xff0c;web前端…

hive mysql命令,Hive数据库常用命令

收藏一些Hive数据库常用命令&#xff0c;方便平时准备测试数据集。查看库、创建普通Hive表&#xff1a;show databases;user lch_databases;show tables;create table lch_user_table(int id,name varchar(8),birthday date,salary double(24.7),dd1 decimal(18,4));alert tabl…

判断星座PHP,php根据日期判断星座的函数分享_PHP教程

复制代码 代码如下:function yige_constellation($month, $day) {// 检查参数有效性if ($month < 1 || $month > 12 || $day < 1 || $day > 31) return false;// 星座名称以及开始日期$constellations array(array( "20" > "宝瓶座"),arra…

lumen php命令,php – 如何使用命令行手动运行laravel / lumen作业

跑php artisan make:command DispatchJob创建运行工作的特殊工匠命令.打开创建的DispatchJob.php文件并定义DispatchJob类,如下所示&#xff1a;class DispatchJob extends Command{/*** The name and signature of the console command.** var string*/protected $signature …

无法连接iphone软件更新服务器_苹果发布了iphone、ipad和mac的新软件更新

苹果已经发布了三种操作系统的软件更新&#xff1a;用于iphone和ipod的iOS、ipad的iPadOS和Macs的macOS。这些更新很小&#xff0c;主要集中在bug修复上&#xff0c;而不是添加新功能。这些更新标记为iOS 13.6.1、iPadOS 13.6.1和macOS 10.15.6补充更新。通常&#xff0c;iOS或…

php合成图片设置图片大小,php 上传图片并按比例生成指定大小图_PHP教程

php 上传图片并按比例生成指定大小图这是一款图象缩略函数哦&#xff0c;把上传的新图片给$srcfile然后进行文件按$thumbwidth 缩小图宽最大尺寸 与$thumbheitht 缩小图高最大尺寸 生成小图。php教程 上传图片并按比例生成指定大小图这是一款图象缩略函数哦&#xff0c;把上传的…

win10升级助手_关闭win10系统更新

为什么要拒绝更新系统呢&#xff1f;&#xff1f;&#xff1f;1.系统更新占用太多时间2.不合时宜的提醒更新严重影响了工作3.对绝大多数人完全没有必要更新系统微软强奸式的要求更新不合清理。同学们的电脑系统大多数是win10家庭版&#xff0c;可以采用下面方案关闭自动更新&am…

matlab 生成信号文件,生成的代码如何存储内部信号、状态和参数数据

浏览模型示例打开模型示例 rtwdemo_roll。open_system(rtwdemo_roll)该模型包含不连接到根级别 Inport 或 Outport 模块的内部信号。某些信号具有名称&#xff0c;例如 phiCmd 信号。该模型还包含一些维护状态数据的模块。例如&#xff0c;在 BasicRollMode 子系统中&#xff0…

苹果平板怎么卸载软件_怎么很好的卸载流氓软件!

我相信在生活当中&#xff0c;很多人都会在不知情或者不注意的情况下&#xff0c;被迫下载很多自己不想要的软件&#xff0c;而且删除之后总是出现&#xff0c;挥之不去。接下来我将会给大家分享几个下载此类软件的方法&#xff1a;一、通过控制面板卸载点击小图标&#xff0c;…

pbs 写matlab作业,pbs提交作业

如何如何使用使用pbs 提交作业1 串行任务提交用户通过qsub 命令来向系统提交任务&#xff0c;有两种方式提交&#xff1a;脚本方式和命令行方式。(一般情况下&#xff0c;不允许root 用户使用qsub 命令提交作业)1.1 脚本方式提交用户将需要执行的程序或命令写入脚本中&#xff…

python 循环语句结果存储_python条件语句和循环语句

一、条件语句Python 条件语句跟其他语言基本一致的&#xff0c;都是通过一条或多条语句的执行结果&#xff08; True 或者 False &#xff09;来决定执行的代码块。 Python 程序语言指定任何非 0 和非空&#xff08;null&#xff09;值为 True&#xff0c;0 或者 null为 False。…

swift使用mysql教程,Swift学习教程之SQLite的基础使用

前言在我们的日常开发中&#xff0c;经常会遇到用户断网或者网络较慢的情况&#xff0c;这样用户在一进入页面的时候会显示空白的页面&#xff0c;那么如何避免没网显示空白页面的尴尬呢&#xff1f;答案就是&#xff1a;先在网络好的时候缓存一部分数据&#xff0c;这样当下次…

使用c++查看linux服务器某个进程正在使用的内存_精选20个常用的Linux命令

今天总结几个非常常用的Linux命令&#xff0c;其中有几个在面试中很可能问相关命令的原理&#xff0c;比如后台运行命令。希望对大家有所帮助&#xff0c;最好自己去尝试在Linux操作系统中实践一下。1 查看目录以及权限在windows中&#xff0c;使用dir查看当前目录中文件。在Li…

php数组如何去掉相同的元素,如何去掉php数组中的重复的元素

如何去掉php数组中的重复的元素发布时间&#xff1a;2020-07-30 09:49:32来源&#xff1a;亿速云阅读&#xff1a;74作者&#xff1a;Leah今天就跟大家聊聊有关如何去掉php数组中的重复的元素&#xff0c;可能很多人都不太了解&#xff0c;为了让大家更加了解&#xff0c;小编给…

台式电脑可以连wifi吗_不使用WIFI,手机也可以通过电脑的网络上网

让手机通过电脑上网的方式有很多种&#xff0c;最常见的就是 WIFI 了&#xff0c;而且简单直接。但是有时候台式机没有 WIFI &#xff0c;或者电脑的 WIFI 设备已经连接到其他的网络了&#xff0c;这时候手机就不能通过电脑的 WIFI 连接到网络。那么还没有有办法连接到网络呢&a…

php架在底部页面,页脚始终保持在页面底部的网页布局方法

页脚始终保持在页面底部的网页布局方法导语&#xff1a;用CSS创建一个高度自适应布局&#xff0c;如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事。下面就由百分网小编为大家介绍一下页脚始终保持在页面底部的网页布局方法&#xff0c;希…

pgsql 前10条_未来3年,广州83条城中村、285个旧街区将迎来改造

文、图/羊城晚报全媒体记者 赵燕华 通讯员 穗建未来3年&#xff0c;广州83条城中村将实施改造&#xff0c;285个旧街区将迎来改造&#xff0c;推进176个旧厂房改造&#xff0c;将整治1.24亿平方米违建……9月25日&#xff0c;在广州市深化城市更新工作推进高质量发展政策培训暨…

Linux版本Oracle工具,Linux下oracle可视化操作工具sqldeveloper安装与配置

一、Oracle SQL Developer 3.2.2 选择Linux RPM版本下载1、安装sqldeveloper&#xff0c;rpm -ivh sqldeveloper-3.2.20.09.87-1.noarch.rpm&#xff0c;安装完成后软件在/opt/sqldeveloper, 虽然在程序菜单中有sql-developer的图标&#xff0c;但单击并不能启动&#xff0c;估…