1、定义一个 array

  数组长度也是类型的一部分,比如长度为3的int数组与长度为5的int数组,并不是同一类型。

package main

import (
"strconv" //GO语言中将 int 转化成 string 比较麻烦,通常使用 strconv.Itoa(i)
) //格式化输出一个数组,因为不同长度的数组属于不同类型,这里只能用切片作为参数,调用时将数组转换成切片传入即可
func print_array(arr []int) {
var str string
str = "["
for k, v := range arr {
if k == len(arr)- {
str = str + strconv.Itoa(v)
} else {
str = str + strconv.Itoa(v) + ","
}
}
str += "]"
println(str)
} func main() {
//1、指明数组长度: 初始化的元素个数应该小于等于数组长度,否则会编译出错,如果初始化的元素长度小于数组个数,则未初始化部分系统会自动补为默认零值
array1 := []int{} //相当于 [0,0,0]
print_array(array1[:])
array2 := []int{, } //相当于 [1,2,0]
print_array(array2[:])
//arr := [3]int{1, 2, 3, 4} //初始化元素个数如果大于数组长度,则会编译出错
array3 := []int{: , : } //相当于[0,2,3] ,同 struct 一样,GO同样支持初始化时指定key,这里的key表示索引,未初始化的索引值为默认零值
print_array(array3[:]) //2、不指明数组长度: 数组的长度由初始化的元素决定
array4 := [...]int{, , } //相当于 [1,2,3]
print_array(array4[:]) array5 := [...]int{: , : } //相当于 [0,2,3]
print_array(array5[:])
}

2、数组操作

  通过数组名和数组下标即可进行访问和修改操作,通过 for .. range 可以进行遍历操作。因为数组的长度是固定的,也没有容量概念,所以概念和使用上都是比较简单的。

  for ... range 可以用于 array\slice\map 的遍历,如果对 string 进行遍历,则默认得到的 value 值是对应字符的ASCII码,这一点需要注意。

    //以下会输出 97,98,99,100,
s := "abcd"
for _, v := range s {
print(v, ",")
}

3、数组的特性

  GO语言中的数组是值类型,当赋值给另一个数组变量或作为方法参数传递时,都会复制数组的副本。

  注意,与C语言不同,数组的名字不代表数组的第一个元素的指针,这两种语言的数组存储结构不同,GO语言的数组存储结构是,首部存储数组长度,然后后面是实际数据。

  

golang笔记——array的更多相关文章

  1. Golang笔记(一)简洁的语言风格

    Golang笔记(一)简洁的语言风格 概述 Golang继承了很多C语言的风格,寡人使用了十几年C语言,切换到Golang时上手很快,并且随着深入的使用,越来越喜欢这门语言.Golang最直观的感受是 ...

  2. golang笔记1

    golang笔记1 go代码是用包来组织的,每个包有一个或多个go文件组成,这些go文件文件放在一个文件夹中 每个源文件开始都用一个package声明,指明本源文件属于哪个包 pakage声明后紧跟这 ...

  3. Golang笔记(二)面向对象的设计

    Golang笔记(二)面向对象的设计 Golang本质还是面向过程的语言,但它实现了一些OOP的特性,包括抽象.封装.继承和多态. 抽象和封装 Golang和C语言一样以struct为数据结构核心,不 ...

  4. golang之array

    golang使用array表示固定大小的数组,使用slice表示动态数组. package main import "fmt" func main() { var a = [5]i ...

  5. golang笔记2_程序结构

    golang程序结构 2.1 命名 Golang中的命名遵循这样一个简单原则,名字的开头必须是字母或者下划线,后面跟字母.数字或者下划线(这里与C语言中是一致的). 在函数内部声明的实体,即局部变量, ...

  6. golang中Array与Slice

    在golang中有数组和Slice两种数据结构,Slice是基于数组的实现,是长度动态不固定的数据结构,本质上是一个对数组字序列的引用,提供了对数组的轻量级访问.那么在go的函数中以数组或Slice为 ...

  7. Golang笔记集

    学习Golang了, 下面分享我的, 还有我收集的Golang的学习资料 我的基础笔记地址: https://github.com/zhuchangwu/go-study-notes 其他参考: Go ...

  8. Golang笔记整理--One day

    题外话: 很早就有整理学习笔记的想法,今天将想法付诸于行动,将Golang相关知识系统整理一遍,此分类为Golang学习笔记,最近开始学习这门语言的同学可以参考. 一 第一个Go程序: hello.g ...

  9. golang笔记——函数与方法

    如果你遇到没有函数体的函数声明,表示该函数不是以Go实现的. package math func Sin(x float64) float //implemented in assembly lang ...

随机推荐

  1. Centos允许root远程登录设置

      以root权限执行 vi /etc/ssh/sshd_config 将 #PermitRootLogin yes 这一行的“#”去掉,修改为: PermitRootLogin yes 重启ssh服 ...

  2. 【小白的CFD之旅】13 敲门实例【续3】

    接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...

  3. Neutron 理解 (9): OpenStack 是如何实现 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How Neutron Implements Virtual Firewall]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  4. CF724B. Batch Sort[枚举]

    B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化

    往往开发的人不是维护的人,开发的单位不是维护的单位.信息的畅通沟通交流很多时候会有打折.扭曲.甚至是容易得到歪解.配置错业务操作权限.为了防止发生没必要的麻烦,甚至是发生重大错误,我们的软件需要不断换 ...

  6. 微信小程序购物商城系统开发系列-工具篇

    微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...

  7. while跟do...while的用法

    while语句的形式: while(逻辑表达式){语句:.......} 执行过程: 先判断逻辑表达式的值.若=true,则执行其后面的语句,然后在次判断条件并反复执行, 直到条件不成立为止. do ...

  8. Webpack学习笔记一:What is webpack

      #,Loaders干嘛的,webpack can only process JavaScript natively, but loaders are used to transform other ...

  9. Dell xps 13 9350待机时总是关机的处理方法

    现象: 年初买的dell xps13 9350,最近可能是由于win10做了一些更新,每次睡眠就自动关机了,重启很多次,修改电源选项都没用, 原因分析: 在网上搜了一下,有人发现xps15 9350也 ...

  10. 当泛型方法推断,扩展方法遇到泛型类型in/out时。。。

    说到泛型方法,这个是.net 2.0的时候引入的一个重要功能,c#2.0也对此作了非常好的支持,可以不需要显试的声明泛型类型,让编译器自动推断,例如: void F<T>(T value) ...