[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-862":3,"consumer-news-interaction-862":40,"consumer-news-related-862":43},{"detail":4,"item":35},{"card":5,"schemaVersion":22,"fields":23,"content":29},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":14,"href":15,"sourceName":12,"meta":16,"metrics":19,"tags":20,"resolved":21},"NEWS_ARTICLE:862","news","NEWS_ARTICLE",862,"资讯","go中make声明切片, 修改切片,append给切片扩容,合并切片,复制切片","博客园","make 声明切片 make([]类型, 长度， 容量) kage main import (&quot;fmt&quot;) \u002F\u002F 入口函数 func main() { \u002F\u002F make 声明切片，长度是4， 容量是10 var sliceArr1 = make([]int, 4, 10) fmt.","","\u002Fnews\u002F862",[17,18],"2026","软件开发",{},[18],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":24,"categoryName":18,"summary":13,"description":13,"publishTime":25,"updateTime":26,"sourceUrl":27,"language":28},"何人陪我共长生","2026-09-01T20:09","2026-09-02T20:37:50","https:\u002F\u002Fwww.cnblogs.com\u002Fishoulgodo\u002Fp\u002F22796496","中文",{"format":30,"policy":31,"normalized":21,"html":32,"text":33,"wordCount":34,"hasBody":21},"HTML","NEWS_CONTENT_V1","\u003Ch4>make 声明切片\u003C\u002Fh4>\n\u003Cp>make([]类型, 长度， 容量)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>kage main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  \u002F\u002F make 声明切片，长度是4， 容量是10\n  var sliceArr1 = make([]int, 4, 10)\n  fmt.Printf(\"切片：%v\", sliceArr1)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>切片：[0 0 0 0]\u003Cbr>\n  为啥是0呢？因为：numbers---&gt; 默认值: 0\u003C\u002Fp>\n\u003Ch4>切片的的容量 cap(sliceArr1)\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  \u002F\u002F make 声明切片，长度是4， 容量是10\n  var sliceArr1 = make([]int, 4, 10)\n  fmt.Printf(\"切片的容量：%d\", cap(sliceArr1))\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>切片的容量：10\u003C\u002Fp>\n\u003Ch4>%d\u003C\u002Fh4>\n\u003Cp>在 Go 语言（Golang）中，\u003Cbr>\n  %d 是 fmt 标准库中的格式化占位符\u003Cbr>\n  用于将整数以十进制形式输出。\u003C\u002Fp>\n\u003Ch4>修改切片的值\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  \u002F\u002F make 声明切片，长度是4， 容量是10\n  var sliceArr1 = make([]int, 4, 10)\n  sliceArr1[0] =10\n  sliceArr1[1] =1\n  fmt.Printf(\"切片：%v\", sliceArr1)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>切片：[10 1 0 0]\u003C\u002Fp>\n\u003Ch4>go中没有办法通过下标的方式给切片进行扩容\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceArr1 []int\n  \u002F\u002F go中没有办法通过下标的方式给切片进行扩容,下面的写法会报错的\n  sliceArr1[0] =10\n  fmt.Printf(\"%v\",sliceArr1 )\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>会报错的哈；\u003Cbr>\n  go中没有办法通过下标的方式给切片进行扩容\u003C\u002Fp>\n\u003Ch4>append 给切片扩容,新增数据\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceArr1 []int\n  \u002F\u002F 给sliceArr1扩容，然后在赋值给sliceArr1\n  sliceArr1 =append(sliceArr1, 100)\n  sliceArr1 =append(sliceArr1, 10)\n  fmt.Printf(\"%v\",sliceArr1 )\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>append:一次性传递多个数据\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceArr1 []int\n  \u002F\u002F 给sliceArr1扩容，一次性传递多个数据\n  sliceArr1 =append(sliceArr1, 100,10,111)\n  fmt.Printf(\"%v\",sliceArr1 )\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>将一个切片合并到另外一个切片中去\u003C\u002Fh4>\n\u003Cp>sliceArr1 =append(sliceArr1, sliceArr2...)\u003Cbr>\n  把sliceArr2的数据追加到liceArr1\u003Cbr>\n  ... 是固定的写法\u003C\u002Fp>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceArr1 = []int {12,3,100}\n  var sliceArr2 = []int {101,201}\n  \u002F\u002F 给sliceArr1扩容，把sliceArr2的数据追加到liceArr1\n  sliceArr1 =append(sliceArr1, sliceArr2...)\n  fmt.Printf(\"%v\",sliceArr1 )\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>[2 3 100 101 201]\u003C\u002Fp>\n\u003Ch4>通过循环进行扩容\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceA []int\n  for i := 0; i &lt; 3; i++ {\n    sliceA = append(sliceA,i)\n    fmt.Printf(\"值：%v,长度：%d, 容量%d\\n\",sliceA[i], len(sliceA),cap(sliceA) )\n  }\n fmt.Printf(\"最后的值：%v\", sliceA)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>值：0,长度：1, 容量1\u003Cbr>\n  值：1,长度：2, 容量2\u003Cbr>\n  值：2,长度：3, 容量4\u003Cbr>\n  最后的值：[0 1 2]\u003C\u002Fp>\n\u003Cp>为啥容量是4，因为这个是golang中的扩容策略。\u003Cbr>\n  容量不一定等于长度。\u003C\u002Fp>\n\u003Ch4>copy()函数复制切片\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceA = []int {1,2,3,4}\n  var sliceB =make([]int,4,4)\n  \u002F\u002F 把切片A赋值给切片B\n  copy(sliceB,sliceA)\n  fmt.Printf(\"最后的值sliceA：%v\\n\", sliceA)\n  fmt.Printf(\"最后的值sliceB：%v\", sliceB)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>最后的值sliceA：[1 2 3 4]\u003Cbr>\n  最后的值sliceB：[1 2 3 4]\u003C\u002Fp>\n\u003Ch4>copy()函数复制切片修改后不会影响另一个切片的值\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceA = []int {1,2,3,4}\n  var sliceB =make([]int,4,4)\n  \u002F\u002F 把切片A赋值给切片B\n  copy(sliceB,sliceA)\n  sliceA[0] = 1000\n  fmt.Printf(\"最后的值sliceA：%v\\n\", sliceA)\n  fmt.Printf(\"最后的值sliceB：%v\", sliceB)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>最后的值sliceA：[1000 2 3 4]\u003Cbr>\n  最后的值sliceB：[1 2 3 4]\u003Cbr>\n  只更改了切片A的值，B没有发生变化哈\u003C\u002Fp>\n\u003Ch4>Go语言中并没有删除切片元素的专用方法\u003C\u002Fh4>\n\u003Cp>Go语言中并没有删除切片元素的专用方法，我们可以使用切片本身的特性来删除元素\u003C\u002Fp>\n\u003Ch4>删除下标为2的元素\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>package main\nimport (\"fmt\")\n\u002F\u002F 入口函数\nfunc main()  {\n  var sliceA = []int {0,1,2,3,4,5,6,7}\n  \u002F\u002F sliceA[:2] 左闭右开, 0,1\n  \u002F\u002F sliceA[3:]左闭右开, 3,4,5,6,7\n  \u002F\u002F append合并切片的时候最后一个元素要加...\n  sliceA  = append(sliceA[:2],sliceA[3:]...)\n  fmt.Printf(\"最后的值sliceA：%v\", sliceA)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>最后的值sliceA：[0 1 3 4 5 6 7]\u003C\u002Fp>","make 声明切片 make([]类型, 长度， 容量) kage main import (\"fmt\") \u002F\u002F 入口函数 func main() { \u002F\u002F make 声明切片，长度是4， 容量是10 var sliceArr1 = make([]int, 4, 10) fmt.Printf(\"切片：%v\", sliceArr1) } 切片：[0 0 0 0] 为啥是0呢？因为：numbers---> 默认值: 0 切片的的容量 cap(sliceArr1) package main import (\"fmt\") \u002F\u002F 入口函数 func main() { \u002F\u002F make 声明切片，长度是4， 容量是10 var sliceArr1 = make([]int, 4, 10) fmt.Printf(\"切片的容量：%d\", cap(sliceArr1)) } 切片的容量：10 %d 在 Go 语言（Golang）中， %d 是 fmt 标准库中的格式化占位符 用于将整数以十进制形式输出。 修改切片的值 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { \u002F\u002F make 声明切片，长度是4， 容量是10 var sliceArr1 = make([]int, 4, 10) sliceArr1[0] =10 sliceArr1[1] =1 fmt.Printf(\"切片：%v\", sliceArr1) } 切片：[10 1 0 0] go中没有办法通过下标的方式给切片进行扩容 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceArr1 []int \u002F\u002F go中没有办法通过下标的方式给切片进行扩容,下面的写法会报错的 sliceArr1[0] =10 fmt.Printf(\"%v\",sliceArr1 ) } 会报错的哈； go中没有办法通过下标的方式给切片进行扩容 append 给切片扩容,新增数据 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceArr1 []int \u002F\u002F 给sliceArr1扩容，然后在赋值给sliceArr1 sliceArr1 =append(sliceArr1, 100) sliceArr1 =append(sliceArr1, 10) fmt.Printf(\"%v\",sliceArr1 ) } append:一次性传递多个数据 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceArr1 []int \u002F\u002F 给sliceArr1扩容，一次性传递多个数据 sliceArr1 =append(sliceArr1, 100,10,111) fmt.Printf(\"%v\",sliceArr1 ) } 将一个切片合并到另外一个切片中去 sliceArr1 =append(sliceArr1, sliceArr2...) 把sliceArr2的数据追加到liceArr1 ... 是固定的写法 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceArr1 = []int {12,3,100} var sliceArr2 = []int {101,201} \u002F\u002F 给sliceArr1扩容，把sliceArr2的数据追加到liceArr1 sliceArr1 =append(sliceArr1, sliceArr2...) fmt.Printf(\"%v\",sliceArr1 ) } [2 3 100 101 201] 通过循环进行扩容 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceA []int for i := 0; i \u003C 3; i++ { sliceA = append(sliceA,i) fmt.Printf(\"值：%v,长度：%d, 容量%d\\n\",sliceA[i], len(sliceA),cap(sliceA) ) } fmt.Printf(\"最后的值：%v\", sliceA) } 值：0,长度：1, 容量1 值：1,长度：2, 容量2 值：2,长度：3, 容量4 最后的值：[0 1 2] 为啥容量是4，因为这个是golang中的扩容策略。 容量不一定等于长度。 copy()函数复制切片 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceA = []int {1,2,3,4} var sliceB =make([]int,4,4) \u002F\u002F 把切片A赋值给切片B copy(sliceB,sliceA) fmt.Printf(\"最后的值sliceA：%v\\n\", sliceA) fmt.Printf(\"最后的值sliceB：%v\", sliceB) } 最后的值sliceA：[1 2 3 4] 最后的值sliceB：[1 2 3 4] copy()函数复制切片修改后不会影响另一个切片的值 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceA = []int {1,2,3,4} var sliceB =make([]int,4,4) \u002F\u002F 把切片A赋值给切片B copy(sliceB,sliceA) sliceA[0] = 1000 fmt.Printf(\"最后的值sliceA：%v\\n\", sliceA) fmt.Printf(\"最后的值sliceB：%v\", sliceB) } 最后的值sliceA：[1000 2 3 4] 最后的值sliceB：[1 2 3 4] 只更改了切片A的值，B没有发生变化哈 Go语言中并没有删除切片元素的专用方法 Go语言中并没有删除切片元素的专用方法，我们可以使用切片本身的特性来删除元素 删除下标为2的元素 package main import (\"fmt\") \u002F\u002F 入口函数 func main() { var sliceA = []int {0,1,2,3,4,5,6,7} \u002F\u002F sliceA[:2] 左闭右开, 0,1 \u002F\u002F sliceA[3:]左闭右开, 3,4,5,6,7 \u002F\u002F append合并切片的时候最后一个元素要加... sliceA = append(sliceA[:2],sliceA[3:]...) fmt.Printf(\"最后的值sliceA：%v\", sliceA) } 最后的值sliceA：[0 1 3 4 5 6 7]",2495,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":15,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":39},"2026 · 软件开发","#2563eb","16 \u002F 10",[18],{"targetType":8,"targetId":9,"likedByMe":41,"likeCount":42,"commentCount":42,"contentLikeCount":42,"contentCommentCount":42,"sourceLikeCount":42,"sourceCommentCount":42},false,0,[44,50,57,63,70,77,84,90],{"id":45,"kind":7,"title":46,"summary":47,"image":14,"href":48,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":49},"NEWS_ARTICLE:832","用 runtime-async 写一个支持 async\u002Fawait 的轻量脚本引擎","起因：一个好奇 事情的开头很简单。 给 .NET 做过动态脚本的人大概都碰到过同一堵墙：表达式树也好、Reflection.Emit 也好，都很难支持 async\u002Fawait。原因不在语法，而在 await 的实现方式——C# 编译器要为每个 async 方法生成一个状态机结构体，把方法体切成若干片","\u002Fnews\u002F832",[18],{"id":51,"kind":7,"title":52,"summary":53,"image":54,"href":55,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":56},"NEWS_ARTICLE:855","被罚了500后，整个人都变老实了","我们组有个同事，以前是那种闲不住的人。现在也闲不住 只不过是不敢动了。 去年部门空降了一位新总监，阿里P8，第一次全员会PPT上就八个大字：拥抱变化，永不言弃。 新领导上来搞流程改革，每个模块指定Owner，出事追责到人，A级事故罚款500起步，B级300 依次类推，发版上线改配置全走审批。说实话之","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F273387\u002F202608\u002F273387-20260818222617092-925481998.png","\u002Fnews\u002F855",[18],{"id":58,"kind":7,"title":59,"summary":60,"image":14,"href":61,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":62},"NEWS_ARTICLE:866","Spring Boot事件监听，这东西到底解决啥问题？","一、先聊个场景，你就明白这玩意儿干啥的了 点过外卖吧？那咱们就用这个场景来说事。 你掏出手机下了单，付了钱。接下来会发生啥？ 厨房那头开始备菜炒菜（这件事耽误不得，客户饿着呢） 手机收到一条短信：&quot;您的订单已收到，预计30分钟送达&quot; 你的会员账户里多了一堆积分 店长那个收银小喇叭","\u002Fnews\u002F866",[18],{"id":64,"kind":7,"title":65,"summary":66,"image":67,"href":68,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":69},"NEWS_ARTICLE:881","RSA 密码传输加密通用接入方案","@目录前言一、介绍二、RSA 在本方案中的角色三、密文协议格式四、密钥生成与 Apollo 配置4.1 编译工具类4.2 执行生成密钥4.3 执行输出示例4.4 Apollo 配置示例五、后端接入方式AOP 注解示例六、后端解密流程七、前端接入方式7.1 获取公钥和 nonce7.2 使用 RSA-","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1867541\u002F202608\u002F1867541-20260831165110853-162420906.png","\u002Fnews\u002F881",[18],{"id":71,"kind":7,"title":72,"summary":73,"image":74,"href":75,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":76},"NEWS_ARTICLE:888","[开源] LogCrate：免解压、支持筛选和 AI 分析的 PC 端桌面日志工具","日常排查客户软件运行问题时，经常需要反复下载日志、解压缩，再从一堆文件里慢慢翻找，过程比较麻烦；而且很多日志工具也不支持针对具体字段进行筛选。 对比了一些市面上的日志分析工具后，发现能够同时兼容归档阅读、目录监控、到达通知、结构化筛选和 AI 分析的工具并不多，于是就自己动手做了一款。 PS：自己做","https:\u002F\u002Fiili.io\u002FCy4ztaa.png","\u002Fnews\u002F888",[18],{"id":78,"kind":7,"title":79,"summary":80,"image":81,"href":82,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":83},"NEWS_ARTICLE:900","java 多线程开发系列之七：玩转多线程（线程的协作）","线程的协作多种多样，这次主要说说wait和notify两种Object的方法。这也是java早期原生的重要的协作机制之一。先说下这两个英文单词：wait [weɪt] v.等待;等候;(尤指长期地)希望，盼望，期待notify [ˈnəʊtɪfaɪ] vt.通知;(正式)通报;也就是一个等待，一个通","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F704073\u002F202608\u002F704073-20260831103138251-1707185366.png","\u002Fnews\u002F900",[18],{"id":85,"kind":7,"title":86,"summary":87,"image":14,"href":88,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":89},"NEWS_ARTICLE:902","DeepSeek Harness 插件","准备环境 dsh 从源码运行，见 dsh 说明。或见之前分享的 DeepSeek Harness 开始。 开发插件 依照 dsh 文档，动手做一遍： 第一个插件: https:\u002F\u002Fdeepseek-harness.github.io\u002Fdeepseek-harness\u002Fdevelop\u002Fbasic\u002F 第","\u002Fnews\u002F902",[18],{"id":91,"kind":7,"title":92,"summary":93,"image":94,"href":95,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":96},"NEWS_ARTICLE:917","[python] pywinauto使用指北","当业务系统没有API、命令行接口或可直接集成的数据通道时，桌面自动化往往是打通业务流程的最后一公里。pywinauto库通过Win32 API与Microsoft UI Automation（UIA）访问Windows窗口及控件，使Python脚本能够驱动桌面应用。本文聚焦于pywinauto的基础","https:\u002F\u002Fgitlab.com\u002Fluohenyueji\u002Farticle_picture_warehouse\u002F-\u002Fraw\u002Fmain\u002FCSDN\u002F%5Bpython%5D%20pywinauto%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8C%97\u002Fimgs\u002F1.jpg","\u002Fnews\u002F917",[18]]