Go语言基础切片的创建及初始化示例详解

yizhihongxing

Go语言基础切片的创建及初始化示例详解

什么是切片

切片是 Go 语言中一个重要的数据类型,它与数组非常相似,但是切片的长度是可以动态变化的。切片是由指向底层数组的指针、长度和容量三部分组成的。

切片的创建

使用 make 函数创建

make 函数是 Go 语言中用于创建切片、字典和信道等动态数据结构的内置函数。make 函数的第一个参数表示需要创建的类型,第二个参数表示切片的长度,第三个参数表示切片的容量。

示例代码:

package main

import "fmt"

func main() {
    slice := make([]int, 5, 10)
    fmt.Printf("len=%d cap=%d slice=%v\n", len(slice), cap(slice), slice)
}

输出:

len=5 cap=10 slice=[0 0 0 0 0]

直接创建切片

切片也可以直接通过对数组或其他切片进行切片操作来创建。

示例代码:

package main

import "fmt"

func main() {
    arr := [10]int{1,2,3,4,5,6,7,8,9,0}
    slice1 := arr[2:7]
    slice2 := slice1[1:4]
    fmt.Println(slice1)
    fmt.Println(slice2)
}

输出:

[3 4 5 6 7]
[4 5 6]

切片的初始化

使用字面量初始化

切片可以通过字面量进行初始化。切片字面量的格式和数组字面量的格式相似,只不过没有固定的长度。切片字面量的语法格式为 []T{a, b, c, ...}

示例代码:

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3, 4, 5}
    fmt.Printf("len=%d cap=%d slice=%v\n", len(slice), cap(slice), slice)
}

输出:

len=5 cap=5 slice=[1 2 3 4 5]

使用 for 循环初始化

切片也可以通过 for 循环来进行初始化。

示例代码:

package main

import "fmt"

func main() {
    slice := make([]int, 5)
    for i:=0; i<5; i++ {
        slice[i] = i+1
    }
    fmt.Printf("len=%d cap=%d slice=%v\n", len(slice), cap(slice), slice)
}

输出:

len=5 cap=5 slice=[1 2 3 4 5]

以上是切片的创建及初始化的两种常见方式,希望可以对初学者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言基础切片的创建及初始化示例详解 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • python使用for…else跳出双层嵌套循环的方法实例

    当我们在Python中使用for循环嵌套时,有时候我们可能需要在内层循环中满足某个条件时跳出外层循环。这时,我们可以使用for…else语句来实现这个目标。 for…else语句的语法如下: for item in iterable: # 循环体 if condition: # 条件满足时跳出循环 break else: # 循环结束后执行的代码 下…

    other 2023年7月28日
    00
  • linuxfilesystem

    以下是关于Linux文件系统的完整攻略,包括基本介绍、实现步骤、示例说明等内容。 1. 基本介绍 Linux文件系统是Linux操作系统中用于管理文件和目录的一种机制。它是由文件和目录组成的层次结构,可以让用户方便地组织和管理文件。Linux文件系统支持多种文件系统类型,包括ext2、ext3、ext4、NTFS等。 2. 实现步骤 以下是使用Linux文件…

    other 2023年5月10日
    00
  • java四种访问权限实例分析

    Java四种访问权限实例分析 在Java中,有四种访问权限修饰符,包括public、protected、default和private。对于不同的访问权限,它们所允许的访问范围也不同,下面我们来详细讲解一下。 1. public public是最宽松的访问权限,使用public修饰的类、变量和方法可以被任何其他类所访问,包括在不同包中的类。 示例1: pac…

    other 2023年6月26日
    00
  • vue报表开发

    Vue报表开发 随着互联网的发展,数据分析和数据可视化变得愈发重要,作为前端开发者,我们需要快速、高效地开发出精美的报表界面来满足用户需求。Vue作为一款优秀的前端框架,具有极高的灵活性和扩展性,这使得它成为开发报表的最佳选择。 Vue报表框架推荐 市面上出现了很多优秀的Vue报表框架,例如: ECharts AntV G2 BizCharts 以上三种报表…

    其他 2023年3月29日
    00
  • win10telentvmware安装的centos79092端口不通

    以下是“win10telentvmware安装的centos7 9092端口不通”的完整攻略: 1. 确认端口是否开放 首先,我们需要确认端口是否开放。可以使用命令: sudo firewall-cmd –list-ports 如果端口在列表中,则需要将其添加到防火墙规中。可以以下命令: sudo firewall-cmd –add-port=9092/…

    other 2023年5月7日
    00
  • CentOS 6.7系统中给IP配置的两种教程

    CentOS 6.7系统中给IP配置的两种教程 在CentOS 6.7系统中,有两种方法可以配置IP地址。下面将详细介绍这两种方法,并提供两个示例说明。 方法一:使用命令行配置IP地址 打开终端,以root用户身份登录。 使用以下命令编辑网络配置文件: vi /etc/sysconfig/network-scripts/ifcfg-eth0 这里的eth0是…

    other 2023年7月31日
    00
  • Java继承的问题引导和测试代码

    下面是详细讲解“Java继承的问题引导和测试代码”的完整攻略。 引导 在Java中,继承是实现面向对象编程的重要特性之一。但是在使用继承过程中,有一些问题需要我们注意。本篇攻略就是为了帮助Java初学者解决继承时遇到的一些问题。 问题与解决 问题一:构造函数覆盖问题 在父类中,如果有一个带有参数的构造函数,那么在子类中如何调用这个构造函数呢? 在Java中,…

    other 2023年6月26日
    00
  • MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程

    MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程 1. 安装innobackupex/xtrabackup工具 首先,需要安装innobackupex或xtrabackup工具,这是用于备份和还原MySQL数据库的工具。可以通过以下命令安装: # 使用yum安装 sudo yum install -y innoback…

    other 2023年10月18日
    00
合作推广
合作推广
分享本页
返回顶部