<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GoLang on My New Hugo Project</title><link>https://scqwq.github.io/categories/golang/</link><description>Recent content from My New Hugo Project</description><generator>Hugo</generator><language>en</language><managingEditor>xxx@example.com (scqwq)</managingEditor><webMaster>xxx@example.com (scqwq)</webMaster><copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright><lastBuildDate>Sun, 03 May 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://scqwq.github.io/categories/golang/index.xml" rel="self" type="application/rss+xml"/><item><title>GIN</title><link>https://scqwq.github.io/post/gin/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/gin/</guid><description>
<![CDATA[<h1>GIN</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="gin">
<a class="header-anchor" href="#gin"></a>
GIN
</h1><p>GIN是一个用go语言编写的Web框架</p>
<h3 id="小知识提要">
<a class="header-anchor" href="#%e5%b0%8f%e7%9f%a5%e8%af%86%e6%8f%90%e8%a6%81"></a>
小知识提要
</h3><h5 id="0基本路线">
<a class="header-anchor" href="#0%e5%9f%ba%e6%9c%ac%e8%b7%af%e7%ba%bf"></a>
0.基本路线:
</h5><p>1.前端静态页面的制作</p>
<p>2.前端的动态部分的制作和往后端传入的api和结构体</p>
<p>3.后端构建需要接收前端（客户端）请求的结构体</p>
<p>4.构建数据库实例DB，连接数据库</p>
<p>5.用err检查数据库连接的返回值，不为nil则panic，并记得延迟注册关闭defer DB.Close()</p>
<p>6.模型绑定 -&gt; DB.AutoMigrate(&amp;Todo{})   Todo{}是一个结构类型，若手动创建表，则表名一定要和后端的一致</p>
<p>7.r.Static引入静态文件,r.LoadHTMLGlob(&ldquo;template/*&quot;)渲染模板</p>
<p>8.写入URL最基本的函数r.GET</p>
<p>9.补全URI参数，并使用c.BindJSON等获取从前端返回的数据，并使用DB.Create、DB.Find等与数据库交互，并使用以下语法：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> <span style="color:#a6e22e">err</span> = <span style="color:#a6e22e">DB</span>.<span style="color:#a6e22e">Create</span>(<span style="color:#f92672">&amp;</span><span style="color:#a6e22e">todo</span>).<span style="color:#a6e22e">Error</span>; <span style="color:#a6e22e">err</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nil</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">JSON</span>(<span style="color:#a6e22e">http</span>.<span style="color:#a6e22e">StatusOK</span>, <span style="color:#a6e22e">gin</span>.<span style="color:#a6e22e">H</span>{<span style="color:#e6db74">&#34;error&#34;</span>: <span style="color:#a6e22e">err</span>.<span style="color:#a6e22e">Error</span>()})<span style="color:#75715e">//错误时候返回信息</span>
</span></span><span style="display:flex;"><span>} <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">c</span>.<span style="color:#a6e22e">JSON</span>(<span style="color:#a6e22e">http</span>.<span style="color:#a6e22e">StatusOK</span>, <span style="color:#a6e22e">todo</span>) <span style="color:#75715e">//返回什么格式和前端说好，用JSON就用JSON，或者用gin.H</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>10.r.RUN</p>
<h6 id="1">
<a class="header-anchor" href="#1"></a>
1.
</h6><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#66d9ef">map</span>[<span style="color:#66d9ef">string</span>][]<span style="color:#66d9ef">string</span>
</span></span></code></pre></div><p>map是键值字符串类型 string为键的类型 []string为值的类型</p>
<h6 id="2http响应">
<a class="header-anchor" href="#2http%e5%93%8d%e5%ba%94"></a>
2.http响应:
</h6><p><strong>HTTP 响应（HTTP Response）</strong> 是服务器收到客户端的 HTTP 请求后，返回给客户端的一组数据，用来告诉客户端<strong>请求是否成功、返回什么内容、以及相关元数据</strong></p>
<!-- raw HTML omitted -->
<h6 id="3gin的安装">
<a class="header-anchor" href="#3gin%e7%9a%84%e5%ae%89%e8%a3%85"></a>
3.GIN的安装
</h6><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#66d9ef">go</span> <span style="color:#a6e22e">get</span> <span style="color:#f92672">-</span><span style="color:#a6e22e">u</span> <span style="color:#a6e22e">github</span>.<span style="color:#a6e22e">com</span><span style="color:#f92672">/</span><span style="color:#a6e22e">gin</span><span style="color:#f92672">-</span><span style="color:#a6e22e">gonic</span><span style="color:#f92672">/</span><span style="color:#a6e22e">gin</span>
</span></span></code></pre></div><p>在终端中执行</p>
<h6 id="4请求含义与作用restful风格下">
<a class="header-anchor" href="#4%e8%af%b7%e6%b1%82%e5%90%ab%e4%b9%89%e4%b8%8e%e4%bd%9c%e7%94%a8restful%e9%a3%8e%e6%a0%bc%e4%b8%8b"></a>
4.请求、含义与作用(RESTFUL风格下)
</h6><p>Gin框架天生只支持restful风格的api</p>
<ul>
<li>GET 获取信息</li>
<li>POST 新建资源（用户上传文件专用）</li>
<li>PUT 更新资源</li>
<li>DELETE 删除资源</li>
</ul>
<h6 id="5go语言的模板引擎">
<a class="header-anchor" href="#5go%e8%af%ad%e8%a8%80%e7%9a%84%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e"></a>
5.GO语言的模板引擎
</h6><p>GO内置了文本模板引擎 text/template和用于HTML文档的html/template</p>
<p>模板可以理解为事先定义好的HTML文档文件，模板渲染的作用机制可以简单理解为文本替换操作-&gt;
即使用相应的数据去替换HTML文档中事先准备好的标记</p>
        
        <hr><p>Published on 2026-05-03 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>GoLang</category></item><item><title>GoLang</title><link>https://scqwq.github.io/post/golang/</link><pubDate>Mon, 04 May 2026 11:00:00 +0800</pubDate><author>xxx@example.com (scqwq)</author><guid>https://scqwq.github.io/post/golang/</guid><description>
<![CDATA[<h1>GoLang</h1><p>Author: scqwq(xxx@example.com)</p>
        
          <h1 id="golang">
<a class="header-anchor" href="#golang"></a>
GOLANG
</h1><p>GO会自动帮你把没用到的东西报错、删除，主打一个简洁。</p>
<h2 id="标准开局">
<a class="header-anchor" href="#%e6%a0%87%e5%87%86%e5%bc%80%e5%b1%80"></a>
标准开局:
</h2><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#f92672">package</span> <span style="color:#a6e22e">main</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> (
</span></span><span style="display:flex;"><span>	<span style="color:#e6db74">&#34;fmt&#34;</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">func</span> <span style="color:#a6e22e">main</span>(){		<span style="color:#75715e">//主函数</span>
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">fmt</span>.<span style="color:#a6e22e">printkn</span>(<span style="color:#e6db74">&#34;Hello world&#34;</span>)
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h5 id="-">
<a class="header-anchor" href="#-"></a>
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-
</h5><ul>
<li>
<h2 id="变量的定义">
<a class="header-anchor" href="#%e5%8f%98%e9%87%8f%e7%9a%84%e5%ae%9a%e4%b9%89"></a>
变量的定义:
</h2></li>
</ul>
<p>可使用const \ var  :=定义 ,可以用( )多个定义，可以不用输入数据类型让机器自行判断（也可以输）</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#66d9ef">const</span>(  
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">v1</span> = <span style="color:#66d9ef">iota</span> <span style="color:#75715e">//此时iota = 0</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">_</span>        <span style="color:#75715e">//可以使用 _ 下划线跳过某些值</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">v5</span> = <span style="color:#ae81ff">100</span> <span style="color:#75715e">//中间设置新变量也会跳</span>
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">v2</span> = <span style="color:#66d9ef">iota</span> <span style="color:#75715e">//此时iota = 3</span>
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">number</span> <span style="color:#66d9ef">int</span> = <span style="color:#ae81ff">114</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">num</span> <span style="color:#f92672">:=</span> <span style="color:#66d9ef">int</span> <span style="color:#ae81ff">514</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">num2</span> <span style="color:#f92672">:=</span> <span style="color:#ae81ff">5461313</span>
</span></span></code></pre></div><p>使用 := 短声明符号可以便捷地定义并赋值，让机器来默认数据类型</p>
<p>定义结构体变量如下:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#66d9ef">type</span> <span style="color:#a6e22e">books</span> <span style="color:#66d9ef">struct</span> {
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">Name</span>    <span style="color:#66d9ef">string</span>
</span></span><span style="display:flex;"><span>		<span style="color:#a6e22e">Address</span> <span style="color:#66d9ef">string</span>
</span></span><span style="display:flex;"><span>	}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">hundred_alone</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">books</span>{<span style="color:#e6db74">&#34;hundred_alone&#34;</span>, <span style="color:#e6db74">&#34;191810&#34;</span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fmt</span>.<span style="color:#a6e22e">Println</span>(<span style="color:#a6e22e">hundred_alone</span>)                             <span style="color:#75715e">//OK but have { }</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fmt</span>.<span style="color:#a6e22e">Println</span>(<span style="color:#a6e22e">hundred_alone</span>.<span style="color:#a6e22e">Name</span>, <span style="color:#a6e22e">hundred_alone</span>.<span style="color:#a6e22e">Address</span>) <span style="color:#75715e">//OK</span>
</span></span></code></pre></div><p>对于结构体变量的输出多试几次即可</p>
<p>对了 赋值时可以在右侧运算 与c相同</p>
        
        <hr><p>Published on 2026-05-04 at <a href='https://scqwq.github.io/'>My New Hugo Project</a>, last modified on 2026-05-03</p>]]></description><category>GoLang</category></item></channel></rss>