当前位置:网站首页>GO语言-数组Array
GO语言-数组Array
2022-06-11 15:36:00 【一边学习一边哭】
前言
数组:存储相同数据类型的数据结构
数组是定长的,定义了多大就是多大。操作数组中的数据,可以通过索引来操作。
创建数组语法
数组
var array_name [size]array_type
var array_name = [size]array_type
var array_name = [size]array_type{v1, v2, v3, v4} //如果值比size小,int类型用0填充,string类型用空字符串填充。
var array_name = [size]array_type{index1: v1, index3 : v3}
//size写成... 就会在赋值完成后自动计算数组长度
array_name := [...]array_type{v1, v2, v3, v4}
array_name := [...]array_type{index1: v1, index3 : v3}
多维数组
一维数组:存储数据本身
a1 := [3]int{1,2,3}
二维数组:数组中存储的也是数组
a2 := [3][4]int{ {}, {}, {}}
容量3是指二位数组的容量,存储了3个一维数组;容量4是指一维数组的容量。
func main() {
arr := [3][4]int{
{}, {1, 2, 3, 4}, {}}
fmt.Println(arr)
}
//输出:[[0 0 0 0] [1 2 3 4] [0 0 0 0]]访问数组
数组
使用数组的索引(下标)即可访问数组。
func main() {
array_test := []int{1, 2, 3, 4}
fmt.Println(array_test[0], array_test[3])
}获取数组的长度和容量:len()获取长度、cap()获取容量,数组的长度和容量是相等的。
遍历二维数组
func main() {
arr := [2][4]int{
{}, {1, 2, 3, 4}}
fmt.Println("---数组arr---: \n", arr)
//for循环
fmt.Println("\n---for循环遍历数组arr---:")
for i := 0; i < len(arr); i++ {
for j := 0; j < len(arr[i]); j++ {
fmt.Printf("%d ", arr[i][j])
}
}
//for range
fmt.Println("\n---for range遍历数组arr---:")
for _, arr1val := range arr {
for _, arr2val := range arr1val {
fmt.Printf("%d ", arr2val)
}
}
}
数组的数据类型
值类型/引用类型
数组是值类型。赋值的时候,是将原来的值复制一份给新的值。操作新的值对原本数值没有影响。
数值类型:int float bool string array
引用类型:slice map...
引用类型赋值的时候,新的值是直接操作原来值的内存地址。
Array内存分析
数组存储相同类型的数据,会开辟一个连续的内存。go语言的内存是系统自动分配的,当数组不用的时候,就会由GC垃圾回收机制从内存中回收。
数组的地址,其实就是数组第一个元素的地址。因为数组中的元素类型一样,占用内存大小一样。所以就很容易寻址。
func main() {
array_test := [4]int{1, 2, 3, 4}
fmt.Printf("%p--数组内存地址\n", &array_test)
fmt.Printf("%p--数组中第1个元素内存地址\n", &array_test[0])
fmt.Printf("%p--数组中第2个元素内存地址\n", &array_test[1])
}
边栏推荐
- YEF 2022昨日开幕,多网络平台全程免费直播,开启在线技术盛宴!
- 07 _ Functions and disadvantages of row lock: how to reduce the impact of row lock on performance?
- 05 _ 深入浅出索引(下)
- leetcode 120. Triangle minimum path sum
- 【创建型模式】原型模式
- 向数据库导入数据?试试COPY FROM STDIN语句
- 02 _ 日志系统:一条SQL更新语句是如何执行的?
- openGauss AI能力升级,打造全新的AI-Native数据库
- uniapp滚动条置顶实现
- 前沿科技探究DeepSQL:库内AI算法
猜你喜欢

Don't you understand the design and principle of thread pool? Break it up and crush it. I'll teach you how to design the thread pool
![[0006] title, keyword and page description](/img/28/973bdb04420c9e6e9a2331663c6948.png)
[0006] title, keyword and page description

The third generation Pentium B70 won the C-NCAP five-star safety performance again

数据库资源负载管理(下篇)

【创建型模式】建造者模式

02 _ 日志系统:一条SQL更新语句是如何执行的?

Hard core analysis lazy single case

IDEA2021.1版本安装教程

从0到1稳稳掌握大厂主流技术,年后涨薪不是必须的吗?

2022 Tibet's latest junior firefighter simulation test question bank and answers
随机推荐
数据库资源负载管理(上篇)
openGauss企业版安装
[creation mode] abstract factory mode
Charles自动保存响应数据
企业开发如何写出优雅的二级分类【美团小案例】
Introduction and use of etcd
【愚公系列】2022年06月 .NET架构班 079-分布式中间件 ScheduleMaster的集群原理
HowNet has been filed for investigation; Byte beat established Tiktok group or listed in Hong Kong; The nail was exposed to be cut by 30%; Beijing's per capita deposit exceeds 200000 yuan | Q informat
数据库资源负载管理(下篇)
数据库密态等值查询概述及操作
Analysis of the execution process of opengauss simple query SQL
[creation mode] prototype mode
JVM基础概念入门
Failed to create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container..
uniapp滚动条置顶实现
PHP Apache built-in stress testing tool AB (APACHE bench)
Performance of MOS transistor 25n120 of asemi in different application scenarios
【创建型模式】原型模式
前沿科技探究之AI工具:Anomaly-detection
【0006】title、關鍵字及頁面描述