<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>01. 基本数据类型 on Keith's Site</title><link>https://cqroot.github.io/docs/go/01-data-types/</link><description>Recent content in 01. 基本数据类型 on Keith's Site</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 23 Aug 2026 21:34:22 +0800</lastBuildDate><atom:link href="https://cqroot.github.io/docs/go/01-data-types/index.xml" rel="self" type="application/rss+xml"/><item><title>01. Go 语言中类型的零值</title><link>https://cqroot.github.io/docs/go/01-data-types/01-zero-values/</link><pubDate>Sun, 23 Aug 2026 20:55:14 +0800</pubDate><guid>https://cqroot.github.io/docs/go/01-data-types/01-zero-values/</guid><description>&lt;p&gt;在 Go 中，当变量被声明但没有显式初始化时，会被赋予一个默认值，即零值。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数值类型的零值为 &lt;code&gt;0&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;布尔类型的零值为 &lt;code&gt;false&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;字符串类型的零值为 &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;指针、函数、接口、&lt;code&gt;slice&lt;/code&gt;、&lt;code&gt;channel&lt;/code&gt; 和 &lt;code&gt;map&lt;/code&gt; 的零值为 &lt;code&gt;nil&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;数组的零值是由其元素类型零值组成的数组，如 &lt;code&gt;var arr [3]int&lt;/code&gt; 的零值是 &lt;code&gt;[0 0 0]&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;emptyInt&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;emptyBool&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;emptyStr&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Zero value for int: %d\n&amp;#34;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;emptyInt&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Zero value for bool: %t\n&amp;#34;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;emptyBool&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Printf&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Zero value for string: %q\n&amp;#34;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;emptyStr&lt;/span&gt;) &lt;span style="color:#75715e"&gt;// &amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参考：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://go.dev/ref/spec#The_zero_value"&gt;The zero value - Go Spec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://go.dev/tour/basics/12"&gt;Zero values - A Tour of Go&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>02. Go 语言中 new 和 make 的区别</title><link>https://cqroot.github.io/docs/go/01-data-types/02-new-and-make/</link><pubDate>Sun, 23 Aug 2026 21:34:22 +0800</pubDate><guid>https://cqroot.github.io/docs/go/01-data-types/02-new-and-make/</guid><description>&lt;ol&gt;
&lt;li&gt;&lt;code&gt;new&lt;/code&gt; 用于分配类型 T 所需的内存，并将其初始化为零值；&lt;code&gt;make&lt;/code&gt; 用于分配内存和初始化成员结构。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;new&lt;/code&gt; 的入参类型为任意类型；&lt;code&gt;make&lt;/code&gt; 的入参类型为 &lt;code&gt;slice&lt;/code&gt;、&lt;code&gt;map&lt;/code&gt; 和 &lt;code&gt;channel&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;new&lt;/code&gt; 的返回值类型为指针；&lt;code&gt;make&lt;/code&gt; 的返回值类型为入参类型。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;reflect&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;obj&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;any&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;reflect&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;TypeOf&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;obj&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(new(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// *int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(new(&lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// *bool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(new(&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// *string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(make([]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// []int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(make(&lt;span style="color:#66d9ef"&gt;map&lt;/span&gt;[&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;]&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// map[int]int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;printType&lt;/span&gt;(make(&lt;span style="color:#66d9ef"&gt;chan&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;)) &lt;span style="color:#75715e"&gt;// chan int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>