教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go语言入门基础

Go语言入门基础

发布时间:2021-12-14   编辑:jiaochengji.com
教程集为您提供Go语言入门基础等资源,欢迎您收藏本站,我们将为您提供最新的Go语言入门基础资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h1>Go语言入门基础</h1>

<em>本文是学校选修课程笔记</em>

<blockquote>

author: fengclchn@outlook.com

</blockquote>

<h3>文章目录</h3> <ul><li>Go语言入门基础</li><li><ul><li><ul><li>1.源文件</li><li>2.变量</li><li>3.if语句</li><li>4.分支语句</li><li>5.循环</li></ul></li></ul></li></ul>

<h3>1.源文件</h3> <pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token punctuation">)</span> <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> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Hello World!"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre>

<ol><li>

package声明所属包名称

注意 一般所属包名称与所在目录名相同,main函数包名一定是main

<pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token comment">//声明所属包名称,一般所属包名称与所在目录名相同,main函数包名一定是main</span> </code></pre> </li><li>

import导入标准库或第三方包

单行导入多行导入两种方式

<pre><code class="lang-go hljs"><span class="token comment">//单行导入</span> <span class="token keyword">import</span> <span class="token string">"pkg1"</span> <span class="token keyword">import</span> <span class="token string">"pkg2"</span> </code></pre> <pre><code class="lang-go hljs"><span class="token comment">//多行导入</span> <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token comment">//导入标准库,也可导入第三方包</span> <span class="token string">"math"</span> <span class="token string">"time"</span> <span class="token string">"eqdis/input"</span> <span class="token comment">//eqdis为自定义工程文件名,input为自定义包名</span> <span class="token punctuation">)</span> <span class="token comment">//使用小括号,各项之间没有逗号</span> </code></pre>

<em>在LiteIDE里单行导入多个包时会被自动合并为多行导入格式</em>

</li><li>

入口函数main函数

<ul><li>入口函数main没有参数和返回值,如果要通过shell向main传入参数,可在os.Arg变量中保存</li><li>main函数必须放在main包中</li><li>注意 Go语言中左大括号 ” { “ 必须和函数声明或控制结构在同一行</li><li>注意 Go语句后分号可以省略,出现分号的典型位置是for循环等处</li></ul><pre><code class="lang-go hljs"><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> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"Hello World!"</span><span class="token punctuation">)</span> <span class="token comment">//直接输出</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%d %d=%d\n"</span><span class="token punctuation">,</span> <span class="token number">1</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 comment">//格式化输出</span> <span class="token punctuation">}</span> </code></pre> </li></ol>

<h3>
2.变量</h3> <ul><li>存在以下几种声明方式</li></ul><pre><code class="lang-go hljs"><span class="token keyword">var</span> sum <span class="token builtin">int</span> <span class="token comment">//简单声明,默认初值为0,避免意外</span> <span class="token keyword">var</span> total <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">42</span> <span class="token comment">//声明并初始化</span> <span class="token keyword">var</span> label <span class="token operator">=</span> <span class="token string">"name"</span> <span class="token comment">//类型推断,不需要程序员敲进去类型,此处推断为string类型</span> tag <span class="token operator">:=</span> <span class="token string">"My"</span> <span class="token comment">//短变量 类型推断,用于函数内部,不能作为全局变量</span> <span class="token keyword">var</span> c<span class="token punctuation">,</span> d <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> <span class="token number">85</span> <span class="token comment">//可多变量一同赋值</span> <span class="token keyword">var</span> a<span class="token punctuation">,</span>b <span class="token operator">*</span><span class="token builtin">int</span> <span class="token comment">//a,b均为int型指针</span> </code></pre> <ul><li>Go语言特色 <ul><li>类型跟在变量名后面</li><li>可以类型推断,节省程序员工作</li><li>短变量声明,短变量符号 ” := “注意 短变量仅用于函数内部,不能声明全局变量)</li><li>多变量同时赋值</li></ul></li></ul><h3>3.if语句</h3> <pre><code class="lang-go hljs"><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> a <span class="token operator">:=</span> <span class="token number">3</span> b <span class="token operator">:=</span> <span class="token number">4</span> max <span class="token operator">:=</span> <span class="token number">0</span> <span class="token keyword">if</span> a <span class="token operator">></span> b <span class="token punctuation">{</span> max <span class="token operator">=</span> a <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> max <span class="token operator">=</span> b <span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>max<span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre>

<ul><li>

条件表达式无需括起来

</li><li>

if和else对应的语句块的大括号不能省略,哪怕只有一条语句

</li><li>

左大括号和if/else等控制结构在同一行

</li><li>

else不能单独成行,必须和if的右大括号一起

</li><li>

if后可以添加特征值获取语句,与特征值判断用分号隔开,这是golang用 ” ; “ 的地方之一

</li></ul>

来看一个例子

<pre><code class="lang-go hljs"><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> a <span class="token operator">:=</span> <span class="token number">3</span> b <span class="token operator">:=</span> <span class="token number">4</span> flag <span class="token operator">:=</span> <span class="token function">min</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> a<span class="token punctuation">)</span> <span class="token comment">//此处获取特征值,flag在上下文中都可取</span> <span class="token keyword">if</span> flag <span class="token operator">==</span> <span class="token number">3</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"world"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">func</span> <span class="token function">min</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b <span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token builtin">int</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> min <span class="token builtin">int</span> <span class="token keyword">if</span> a <span class="token operator"><</span> b <span class="token punctuation">{</span> min <span class="token operator">=</span> a <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> min <span class="token operator">=</span> b <span class="token punctuation">}</span> <span class="token keyword">return</span> min <span class="token punctuation">}</span> </code></pre>

上述main函数可以写成

<pre><code class="lang-go hljs"><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> a <span class="token operator">:=</span> <span class="token number">3</span> b <span class="token operator">:=</span> <span class="token number">4</span> <span class="token comment">//可以添加特征值获取语句,与特征值判断用分号隔开,这是golang用;的地方之一</span> <span class="token keyword">if</span> flag <span class="token operator">:=</span> <span class="token function">min</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> a<span class="token punctuation">)</span><span class="token punctuation">;</span> flag <span class="token operator">==</span> <span class="token number">3</span> <span class="token punctuation">{</span><span class="token comment">//此处flag特征值仅可用于条件快内</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"world"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>

运行结果均如下

如果存在第三个分支可以这样

<pre><code class="lang-go hljs"><span class="token keyword">if</span> condition1 <span class="token punctuation">{</span> <span class="token comment">// do something</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> condition2 <span class="token punctuation">{</span> <span class="token comment">// do something else</span> <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token comment">// catch-all or default</span> <span class="token punctuation">}</span> </code></pre> <h3>
4.分支语句</h3> <pre><code class="lang-go hljs"><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> <span class="token keyword">var</span> result <span class="token builtin">int</span> <span class="token keyword">var</span> condition <span class="token builtin">byte</span> <span class="token operator">=</span> <span class="token string">'e'</span> <span class="token comment">//byte类型相当于C语言中的char</span> <span class="token keyword">switch</span> condition <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'b'</span><span class="token punctuation">:</span> result <span class="token operator">=</span> <span class="token number">1</span> <span class="token keyword">case</span> <span class="token string">'e'</span><span class="token punctuation">:</span> result <span class="token operator">=</span> <span class="token number">2</span> <span class="token keyword">default</span><span class="token punctuation">:</span> result <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre>

<ul><li>

fall-through不再是默认行为,符合条件的语句执行完后无需再加break即可自动结束分支过程

</li><li>

简化目标相同的分子条件,使用逗号分隔

</li><li>

分支条件不限于整数和字符,任何有效的表达式都可以作为分支条件(如下)

</li></ul><pre><code class="lang-go hljs"><span class="token keyword">switch</span> result <span class="token operator">:=</span> <span class="token function">calculate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token boolean">true</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> result <span class="token operator"><</span> <span class="token number">0</span><span class="token punctuation">:</span> <span class="token comment">/* negative */</span> <span class="token keyword">case</span> result <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">:</span> <span class="token comment">/* positive */</span> <span class="token keyword">default</span><span class="token punctuation">:</span> <span class="token comment">/* zero */</span> <span class="token punctuation">}</span> </code></pre> <ul><li>注意 分支值如果省略,默认适配为真,及上述true可以去掉(如下)</li></ul><pre><code class="lang-go hljs"><span class="token keyword">switch</span> result <span class="token operator">:=</span> <span class="token function">calculate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">{</span> <span class="token comment">//注意分号不能省略</span> <span class="token comment">/* ... */</span> <span class="token punctuation">}</span> </code></pre> <h3>
5.循环</h3> <ul><li>

go中只有for循环

</li><li>

循环条件不需要括起来

</li><li>

使用方法如下

</li></ul><ol><li>类似普通while循环</li></ol><pre><code class="lang-go hljs"><span class="token comment">//相当于一般的while循环</span> <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> x <span class="token operator">:=</span> <span class="token number">0</span> <span class="token keyword">for</span> x <span class="token operator"><</span> <span class="token number">5</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span> x<span class="token operator"> </span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>


2. 原始的for用法

<pre><code class="lang-go hljs"><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> <span class="token keyword">for</span> x <span class="token operator">:=</span> <span class="token number">0</span><span class="token punctuation">;</span> x <span class="token operator"><</span> <span class="token number">5</span><span class="token punctuation">;</span> x<span class="token operator"> </span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>


3. while(true)或do…while循环

<pre><code class="lang-go hljs"><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> x <span class="token operator">:=</span> <span class="token number">4</span> <span class="token keyword">for</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span> x<span class="token operator">--</span> <span class="token keyword">if</span> x <span class="token operator"><</span> <span class="token number">0</span> <span class="token punctuation">{</span> <span class="token keyword">break</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>


4. for…range循环

<ul><li>可同时返回集合中的数据的索引和值</li><li>range右边的表达式必须是array,slice,string,map或是指向array的指针,也可以是channel</li></ul><pre><code class="lang-go hljs"><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> x <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">100</span><span class="token punctuation">,</span> <span class="token number">101</span><span class="token punctuation">,</span> <span class="token number">102</span><span class="token punctuation">}</span> <span class="token keyword">for</span> i<span class="token punctuation">,</span> v <span class="token operator">:=</span> <span class="token keyword">range</span> x <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> <span class="token string">":"</span><span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>


再看一个例子

<pre><code class="lang-go hljs"><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> <span class="token keyword">for</span> i<span class="token punctuation">,</span> v <span class="token operator">:=</span> <span class="token keyword">range</span> <span class="token string">"Hello 世界"</span> <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Printf</span><span class="token punctuation">(</span><span class="token string">"%d,%c\n"</span><span class="token punctuation">,</span> i<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token comment">//%c表示Unicode字符格式输出</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre>

<em>由上例可见,UTF-8中一个汉字占3B(字节)</em>


到此这篇关于“Go语言入门基础”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
GO语言零基础从入门到精通视频教程
2018年最全Go语言教程零基础入门到进阶实战视频
Go语言笔记--基础(一)
Golang笔记:语法,并发思想,web开发,Go微服务相关
Go语言发展历史、核心、特性及学习路线
查看go 安装了哪些包_go语言基础入门(一)
golang url 收集
从零开始学习GO语言-搭建Go语言开发环境-快速开发入门第一个小程序
Go语言的主要特性和发展影响

[关闭]
~ ~