PageSourceSearch

https://golangguide.top/assets/%E6%98%A8%E5%A4%A9%E9%82%A3%E4%B8%A…E5%9C%A8%E4%B9%88%EF%BC%9F.html-adgmwaaL.js

js golangguide.top collected 2026-10-05 18:45:22 UTC 13,793 bytes, 39 lines download raw bytes

1import{_ as t,r as o,o as p,c as l,a as n,b as s,d as e,e as c}from"./app-DMFMbUxP.js";const i={},r=c(`<figure><img src="https://i.loli.net/2020/09/23/cPoMQsnbLIExiBZ.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h1 id="问题" tabindex="-1"><a class="header-anchor" href="#问题"><span>问题</span></a></h1><div class="language-go line-numbers-mode" data-ext="go" data-title="go"><pre class="language-go"><code><span class="token keyword">package</span> main
2
3<span class="token keyword">import</span> <span class="token string">&quot;fmt&quot;</span>
4
5<span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
6	s <span class="token operator">:=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">}</span>
7	<span class="token keyword">for</span> <span class="token boolean">_</span><span class="token punctuation">,</span> v<span class="token operator">:=</span><span class="token keyword">range</span> s <span class="token punctuation">{</span>
8		s <span class="token operator">=</span><span class="token function">append</span><span class="token punctuation">(</span>s<span class="token punctuation">,</span> v<span class="token punctuation">)</span>
9		fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">&quot;len(s)=%v\\n&quot;</span><span class="token punctuation">,</span><span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">)</span>
10	<span class="token punctuation">}</span>
11<span class="token punctuation">}</span>
12</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>这个代码会造成死循环吗?</strong></p><h1 id="怎么答" tabindex="-1"><a class="header-anchor" href="#怎么答"><span>怎么答</span></a></h1><ul><li><strong>不会死循环</strong>,<code>for range</code>其实是<code>golang</code>的<code>语法糖</code>,在循环开始前会获取切片的长度 <code>len(切片)</code>,然后再执行<code>len(切片)</code>次数的循环。</li></ul><h1 id="解释" tabindex="-1"><a class="header-anchor" href="#解释"><span>解释</span></a></h1><ul><li><code>for range</code>的源码是</li></ul><div class="language-go line-numbers-mode" data-ext="go" data-title="go"><pre class="language-go"><code><span class="token comment">// The loop we generate:</span>
13<span class="token comment">//   for_temp := range</span>
14<span class="token comment">//   len_temp := len(for_temp)</span>
15<span class="token comment">//   for index_temp = 0; index_temp &lt; len_temp; index_temp++ {</span>
16<span class="token comment">//           value_temp = for_temp[index_temp]</span>
17<span class="token comment">//           index = index_temp</span>
18<span class="token comment">//           value = value_temp</span>
19<span class="token comment">//           original body</span>
20<span class="token comment">//   }</span>
21</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>上面的代码会被编译器认为是</li></ul><div class="language-go line-numbers-mode" data-ext="go" data-title="go"><pre class="language-go"><code><span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
22	s <span class="token operator">:=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">}</span>
23	for_temp <span class="token operator">:=</span> s
24	len_temp <span class="token operator">:=</span> <span class="token function">len</span><span class="token punctuation">(</span>for_temp<span class="token punctuation">)</span>
25	<span class="token keyword">
25for</span> index_temp <span class="token operator">:=</span> <span class="token number">0</span><span class="token punctuation">;</span> index_temp <span class="token operator">&lt;</span> len_temp<span class="token punctuation">;</span> index_temp<span class="token operator">++</span> <span class="token punctuation">{</span>
26		value_temp <span class="token operator">:=</span> for_temp<span class="token punctuation">[</span>index_temp<span class="token punctuation">]</span>
27		<span class="token boolean">_</span> <span class="token operator">=</span> index_temp
28		value <span class="token operator">:=</span> value_temp
29		<span class="token comment">// 以下是 original body</span>
30		s <span class="token operator">=</span><span class="token function">append</span><span class="token punctuation">(</span>s<span class="token punctuation">,</span> value<span class="token punctuation">)</span>
31		fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">&quot;len(s)=%v\\n&quot;</span><span class="token punctuation">,</span><span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">)</span>
32	<span class="token punctuation">}</span>
33<span class="token punctuation">}</span>
34</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>代码运行输出</li></ul><div class="language-go line-numbers-mode" data-ext="go" data-title="go"><pre class="language-go"><code><span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token operator">=</span><span class="token number">6</span>
35<span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token operator">=</span><span class="token number">7</span>
36<span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token operator">=</span><span class="token number">8</span>
37<span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token operator">=</span><span class="token number">9</span>
38<span class="token function">len</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token operator">=</span><span class="token number">10</span>
39</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>所以说,那个同事用的是 golang 吗?</strong></p><h1 id="文章推荐" tabindex="-1"><a class="header-anchor" href="#文章推荐"><span>文章推荐:</span></a></h1>`,15),u={href:"https://golangguide.top/golang/%E9%9D%A2%E8%AF%95%E9%A2%98/2.Go%E8%BF%9B%E9%98%B6.html",target:"_blank",rel:"noopener noreferrer"},d={href:"https://golangguide.top/golang/%E9%9D%A2%E8%AF%95%E9%A2%98/1.Go%E5%85%A5%E9%97%A8.html",target:"_blank",rel:"noopener noreferrer"},m={href:"https://golangguide.top/golang/%E5%B8%B8%E7%94%A8%E5%8C%85%E5%A4%A7%E5%85%A8.html",target:"_blank",rel:"noopener noreferrer"},g={href:"https://golangguide.top/golang/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF.html",target:"_blank",rel:"noopener noreferrer"};function k(v,E){const a=o("ExternalLinkIcon");return p(),l("div",null,[r,n("ul",null,[n("li",null,[n("p",null,[n("a",u,[s("golang进阶面试题八股文合集"),e(a)])])]),n("li",null,[n("p",null,[n("a",d,[s("golang基础面试题八股文合集"),e(a)])])]),n("li",null,[n("p",null,[n("a",m,[s("golang常用标准库第三方库大全"),e(a)])])]),n("li",null,[n("p",null,[n("a",g,[s("golang学习路线"),e(a)])])])])])}const _=t(i,[["render",k],["__file","昨天那个在for循环里append元素的同事,今天还在么?.html.vue"]]),A=JSON.parse('{"path":"/golang/%E6%A0%B8%E5%BF%83%E7%9F%A5%E8%AF%86%E7%82%B9/%E6%98%A8%E5%A4%A9%E9%82%A3%E4%B8%AA%E5%9C%A8for%E5%BE%AA%E7%8E%AF%E9%87%8Cappend%E5%85%83%E7%B4%A0%E7%9A%84%E5%90%8C%E4%BA%8B%EF%BC%8C%E4%BB%8A%E5%A4%A9%E8%BF%98%E5%9C%A8%E4%B9%88%EF%BC%9F.html","title":"昨天那个在for循环里append元素的同事,今天还在么?","lang":"zh-CN","frontmatter":{"title":"昨天那个在for循环里append元素的同事,今天还在么?","date":"2020-09-12T22:57:55.000Z","tags":null,"categories":"golang面试题","description":" 问题 这个代码会造成死循环吗? 怎么答 不会死循环,for range其实是golang的语法糖,在循环开始前会获取切片的长度 len(切片),然后再执行len(切片)次数的循环。 解释 for range的源码是 上面的代码会被编译器认为是 代码运行输出 所以说,那个同事用的是 golang 吗
39? 文章推荐: golang进阶面试题八股文合集 go...","head":[["link",{"rel":"canonical","href":"https://golangguide.top/golang/%E6%A0%B8%E5%BF%83%E7%9F%A5%E8%AF%86%E7%82%B9/%E6%98%A8%E5%A4%A9%E9%82%A3%E4%B8%AA%E5%9C%A8for%E5%BE%AA%E7%8E%AF%E9%87%8Cappend%E5%85%83%E7%B4%A0%E7%9A%84%E5%90%8C%E4%BA%8B%EF%BC%8C%E4%BB%8A%E5%A4%A9%E8%BF%98%E5%9C%A8%E4%B9%88%EF%BC%9F.html"}],["meta",{"property":"og:url","content":"https://golangguide.top/golang/%E6%A0%B8%E5%BF%83%E7%9F%A5%E8%AF%86%E7%82%B9/%E6%98%A8%E5%A4%A9%E9%82%A3%E4%B8%AA%E5%9C%A8for%E5%BE%AA%E7%8E%AF%E9%87%8Cappend%E5%85%83%E7%B4%A0%E7%9A%84%E5%90%8C%E4%BA%8B%EF%BC%8C%E4%BB%8A%E5%A4%A9%E8%BF%98%E5%9C%A8%E4%B9%88%EF%BC%9F.html"}],["meta",{"property":"og:site_name","content":"golang全栈指南"}],["meta",{"property":"og:title","content":"昨天那个在for循环里append元素的同事,今天还在么?"}],["meta",{"property":"og:description","content":" 问题 这个代码会造成死循环吗? 怎么答 不会死循环,for range其实是golang的语法糖,在循环开始前会获取切片的长度 len(切片),然后再执行len(切片)次数的循环。 解释 for range的源码是 上面的代码会被编译器认为是 代码运行输出 所以说,那个同事用的是 golang 吗? 文章推荐: golang进阶面试题八股文合集 go..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://i.loli.net/2020/09/23/cPoMQsnbLIExiBZ.png"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-02-12T02:37:21.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"昨天那个在for循环里append元素的同事,今天还在么?"}],["meta",{"property":"article:author","content":"小白debug"}],["meta",{"property":"article:published_time","content":"2020-09-12T22:57:55.000Z"}],["meta",{"property":"article:modified_time","content":"2025-02-12T02:37:21.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"昨天那个在for循环里append元素的同事,今天还在么?\\",\\"image\\":[\\"https://i.loli.net/2020/09/23/cPoMQsnbLIExiBZ.png\\"],\\"datePublished\\":\\"2020-09-12T22:57:55.000Z\\",\\"dateModified\\":\\"2025-02-12T02:37:21.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"小白debug\\",\\"url\\":\\"https://xiaobaidebug.top/\\"}]}"]]},"headers":[],"git":{"createdTime":1739327841000,"updatedTime":1739327841000,"contributors":[{"name":"xiaobai-tech","email":"[email protected]","commits":1}]},"readingTime":{"minutes":1.23,"words":370}
39,"filePathRelative":"golang/核心知识点/昨天那个在for循环里append元素的同事,今天还在么?.md","localizedDate":"2020年9月12日","autoDesc":true}');export{_ as comp,A as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.