golang基础--Array数组
基本特性
格式:
var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组数组长度: 长度(len)也是数组类型的一部分,因此具有不同长度的数组为不同的类型。 如
var a [2]int != var a [3]int注意区分指向数组的指针和指针数组
package main import "fmt" func main() {
// 指向数组的指针:变量是指针
a := [...]int{9:1} //定义一个变量a的数组(长度为10,第10个元素为1) var p *[10]int = &a //定义一个p的变量,类型为指针 //指针数组:变量是数组,元素是指针(内存地址)
x, y := 1, 2
b := [...]*int{&x, & y} fmt.Print(p)
fmt.Print(b)
} print (p)
print (b)
/*输出结果:
p---> &[0 0 0 0 0 0 0 0 0 1]
b---> [0xc04200c0a8 0xc04200c0c0]
*/
数组在Go中属于值类型
数组之间可以使用
==或!=进行比较,但不可以使用<或>,比较是否相等,必须比较长度,类型,元素// 可以使用==和!=对两个数组进行比较
package main
import (
"fmt"
)
func main() {
a := [2]int{1, 2}
b := [2]int{1, 2}
c := [2]int{1, 3}
fmt.Println(a == b) //判断两个数组是否相同
fmt.Println(a == c) //判断两个数组是否相同
}
/*输出
a==b ----> true
a==c ----> false
*/
可以使用
new类创建数组,此仿佛返回一个指向数组的指针(内存地址)package main
import (
"fmt"
)
func main() {
a := [5]int{}
a[1] = 2 //设定数组第二个元素的值为2
fmt.Println(a)
p := new([5]int) //new方法创建一个数组,返回的是一个数组的指针
fmt.Println(p)
p[1] = 2
fmt.Println(p) //数组的指针赋值后,可以达到同样的效果
}
/*输出
a--->[0 2 0 0 0]
p--->[0 0 0 0 0]
p--->&[0 2 0 0 0]
*/
支持多维数组:
//多维数组:类似python中的嵌套数列
package main
import "fmt"
func main() {
a := [2][3]int{
{1, 1, 1},
{2, 2, 2}} //大括号必须放在数组结束的同一层
fmt.Println(a) b := [...][3]int{ //当不知道到底是几维数组时,可以使用...,但是,元素个数不可以使用...
{1: 2}, //一维数组,第2个元素为2
{2: 1}} //二维数组:第三个元素为1
fmt.Println(b) c := [...][4]int{
{3: 3},
{1: 0},
{2: 2}}
fmt.Println(c)
} /*输出
a---> [[1 1 1] [2 2 2]]
b---> [[0 2 0] [0 0 1]]
c---> [[0 0 0 3] [0 0 0 0] [0 0 2 0]]
*/
go实现冒泡排序:
//冒泡排序
package main
import "fmt" func main() {
a := [...]int{5, 2, 3, 1, 6, 8}
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] = a[i] //temp
}
}
}
fmt.Println(a)
} /*输出结果
a---> [5 2 3 1 6 8]
a---> [8 6 5 3 2 1] //从大到小排序
*/
代码解释如下(6-14行):
- 定义一个一维数组,并确定每个元素的值
- 输出原始数组
- 通过len函数确定数组的长度 num
- for 循环,从0开始遍历数组的每一个索引,直到遍历完最后一个元素
- 从数组的第二个索引开始遍历,直到遍历完所有的元素
- 通过索引取值,比较相邻两个元素的大小,如果后一个元素的值大于前一个索引值(倒序)
- 将前一个元素的值赋值给变量temp(临时值)
- 将数组前一个元素的值与后一个元素的值互换位置
- 遍历完所有的元素后,最大的值是第一个元素
golang基础--Array数组的更多相关文章
- GoLang基础数据类型--->数组(array)详解
GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...
- Java Script基础(八) Array数组对象
一.Array数组 JavaScript中的数组也是具有相同数据类型的一个或者多个值得集合.用法和Java中的数组类似. Array对象的常用属性和方法: 属性: length:获取数组的长度: 方法 ...
- GoLang基础数据类型-切片(slice)详解
GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ...
- Golang 基础之基础语法梳理 (二)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第二章节 Golang 基础之基础语法梳理 (一) Gol ...
- Golang基础教程
以下使用goland的IDE演示,包含总计的golang基础功能共20个章节 一.go语言结构: 二.go基础语法: 三.变量 四.常量 五.运算符 六.条件语句 七.循环 八.函数 九.变量作用域 ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- [.net 面向对象编程基础] (17) 数组与集合
[.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总 ...
- PHP基础 之 数组(一)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- golang基础知识之encoding/json package
golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...
随机推荐
- scvmm应答文件 无人值守安装系统
我们可以通过这种windows配置文件实现winpe.光盘等无人职守安装配置操作系统,在scvmm虚拟化平台中这种文件叫做应答文件. 下面为一个windows server 2008 r2的一个完整应 ...
- ubuntu 跑.net core 2.0
安装.net core参考地址:http://www.microsoft.com/net/core/preview#linuxubuntu 服务器版本 UBbuntu 16.04 执行命令 ...
- 使用Razor视图引擎来生成邮件内容
邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难.Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Raz ...
- Python【运算符】
本文介绍 1.Python运算符 运算符分类 运算符分为:算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算 一.算数运算:返回数字 假设变量a=10,b=20 运算符: + 相加a+ ...
- python列表重复判断
import random import string n = 0; while n<10: str_source = string.ascii_letters + string.digits ...
- CentOS 图形界面的关闭与开启
初衷 • 本地开多个虚拟机搞集群测试,为了节省资源,关掉图形界面更好点 CentOS 设置方法 • 编辑配置文件:vim /etc/inittab • 把默认值::initdefault:,改为::i ...
- java 程序设计第一次作业
public class Join{ public static void main(String args[]){ String s1=new String("hello"); ...
- 洛谷P4705 玩游戏(生成函数+多项式运算)
题面 传送门 题解 妈呀这辣鸡题目调了我整整三天--最后发现竟然是因为分治\(NTT\)之后的多项式长度不是\(2\)的幂导致把多项式的值存下来的时候发生了一些玄学错误--玄学到了我\(WA\)的点全 ...
- MySQL直接导出CSV文件,并解决中文乱码的问题
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...
- vue数据响应的坑
1.首先遇到的第一个坑是数组 vue初始化时,data是一个数组并且为空的时候,里面有一些对象元素,直接改变这些对象的的属性不会触发视图更新 解决办法,copy一个新的数组(vue.assign是浅c ...