惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
T
The Blog of Author Tim Ferriss
C
Check Point Blog
博客园_首页
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
L
LangChain Blog
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
Vercel News
Vercel News
博客园 - Franky
V
V2EX
IT之家
IT之家
U
Unit 42
N
Netflix TechBlog - Medium
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
博客园 - 叶小钗
H
Help Net Security
V
Visual Studio Blog
GbyAI
GbyAI

秋码分享

我是如何解决将 c++ 编译成可以在 node.js 中使用的 *.node,中间出现的一大堆问题的(指纹浏览器基石篇) eSIM Plus 爱沙尼亚手机号彻底翻车?“永久有效”悄然变成了一年! 接码平台 SMS-Activate 余额可以转移到新平台使用,截止日期:2026年1月29日 是时候将 hugo-theme-kiwi 主题提交到 themes.gohugo.io 站点上了 Flux2 刚开源就凉了?Z-Image 本地部署狠狠打了个样 声音的未来:Chatterbox —— 用「夸张度旋钮」提升表现力的开源 TTS 向导 还以为那只是换个背景?Qwen-Image-Edit 在 ComfyUI 中能做到更离谱的事 Windows 结合最新版 ComfyUI 部署阿里最新开源的 Qwen-Image 图像大模型 从零样本到跨场景:Seed-VC语音转换技术的革命性突破 大语音模型轻量化革命:MegaTTS3 如何重新定义文本生成语音的技术边界(windows篇) 竞赛级编程大模型OlympicCoder-7B之本地部署(Windows篇) 阿里开源了端到端全模态大模型Qwen-2.5-Omini-7B之本地部署(windows篇) 语音识别之whisper本地部署(实时语音之开篇) 甭管是个人还是企业都能部署的Mistral-Small3.1,远超同级别的模型 文生音乐开源项目DiffRhythm,8G显存本地部署之Windows篇 阿里QwQ-32B本地部署指南:用Ollama轻松运行320亿参数大模型 基于Qwen2.5大模型的Spark-TTS,零样本语音克隆,CPU可运行之本地部署(Windows篇) 智谱开源了文生图CogView4-6B模型,支持中文提示词之本地部署(Windows篇) 基于歌词生成整首歌的开源AI音乐模型,支持中、英、日、韩等多种语言,本地化部署YuE(windows篇) 阿里云开源的文生视频万相 Wan2.1之本地部署Wan2.1-T2V-1.3B模型 互动式开源AI图像编辑神器,Windows11本地部署 MagicQuill 本地部署Qwen2.5-VL-7B-Instruct多模态视觉大模型(Windows篇) 保持角色一致性的绘本生成AI开源项目之Story-Adapter本地部署Windows篇 本地部署 Stable Diffusion 3.5(最新 ComfyUI记录篇) 谁说Win7安装不了Node.js最新版的呢?都2025年,还不更新系统到Win11 vs code远程调试Linux服务器上的php代码 浏览器定制 | Windows11 编译 Chromium 133.0.6885.0(截稿前Chromium最新版之编译篇[一]) 不说是彻底搞懂,至少让你不再惧怕c/c++指针,以及各种奇葩指针变种 解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题 在 Windows8.1 下编译 Chromium (103.0.5060.68 之三)
Go 语言中的数组(Let's Go 十二)
一个游离于山间之上的江湖漫行者。A jungle wanderer who wanders above the mountain · 2022-09-26 · via 秋码分享

其实啊,切片就好像一个完整的蛋糕,你用刀切了一小块,而这一块就是从那完整的蛋糕切了下来。

1、生成切片

首先,需要了解的是,到底什么是切片呢?

其实啊,切片就好像一个完整的蛋糕,你用刀切了一小块,而这一块就是从那完整的蛋糕切了下来。

切片是对数组的某一个连续片段的引用,当然咯,这个片段也可以是整个数组。

slice [start : end]
//slice:  目标切片对象
//start: 目标切片对象的开始索引
//end:   目标切片对象的结束索引

需要注意的是,切片内不包括结束索引所指向的项

package main

import "fmt"

func main() {

    siteConf := [...]string{"秋码记录", "https://qiucode.cn", "秋码淘好货"}

    fmt.Println(siteConf, siteConf[1:2])
}

img

1.1、指定范围生成切片

package main

import "fmt"

func main() {

    var arr [30]int
    for i := 0; i < 30; i++ {
        arr[i] = i + 1
    }
    // 区间
    fmt.Println(arr[10:15])
    // 中间到尾部的所有元素
    fmt.Println(arr[20:])
    // 开头到中间指定位置的所有元素
    fmt.Println(arr[:2])
}

img

1.2、原切片

开始索引结束索引都被忽略时,生成的切片与没有生成的对象一致。

package main

import "fmt"

func main() {

    a := []int{1, 2, 3}
    fmt.Println(a, a[:])
}

img

1.3、空切片

若将开始索引结束索引都设为0的话,那么将会生成空切片

package main

import "fmt"

func main() {

    a := []int{1, 2, 3}
    fmt.Println(a, a[0:0])
}

img

2、声明切片

除了可以从数组或切片中生成切片外,还可以声明一个新的切片,其声明与数组声明方式很相似。

var name []Type
//name:切片的变量名称
//Type: 切片的元素类型

img

代码说明如下:

  • 第 8 行,声明一个字符串切片,切片中拥有多个字符串。
  • 第 10 行,声明一个整型切片,切片中拥有多个整型数值。
  • 第 12 行,将 numListEmpty 声明为一个整型切片,本来会在{}中填充切片的初始化元素,这里没有填充,所以切片是空的,但是此时的 numListEmpty 已经被分配了内存,只是还没有元素。
  • 第 14 行,切片均没有任何元素,3 个切片输出元素内容均为空。
  • 第 16 行,没有对切片进行任何操作,strList 和 numList 没有指向任何数组或者其他切片。
  • 第 18 行和第 19 行,声明但未使用的切片的默认值是 nilstrListnumList 也是 nil,所以和 nil 比较的结果是 true
  • 第 20 行,numListEmpty 已经被分配到了内存,但没有元素,因此和 nil 比较时是 false

切片是动态结构,只能与 nil 判定相等,不能互相判定相等。声明新的切片后,可以使用 append() 函数向切片中添加元素。

3、make() 函数构造切片

其中Type 是指切片的元素类型,size 指的是为这个类型分配多少个元素,cap 为预分配的元素数量,这个值设定后不影响 size,只是能提前分配空间,降低多次分配空间造成的性能问题。

package main

import "fmt"

func main() {

    a := make([]int, 3)
    b := make([]int, 3, 15)

    fmt.Println(a, b)
    fmt.Println(len(a), len(b))
}

img