Go语言入门(2)Go语言基础
(a) 指针类型(Pointer)
(b) 数组类型
© 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型</li></ul><h1>2. 基础语法</h1> <h2>2.1 循环</h2>
go语言里面没有while,所以实现循环都是使用for
无限循环
<pre><code class="lang-go hljs"><span class="token keyword">for</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> </code></pre>条件循环
<pre><code class="lang-go hljs"><span class="token keyword">for</span> i<span class="token operator">:=</span><span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span><span class="token number">10</span> <span class="token punctuation">;</span> i<span class="token operator"> </span><span class="token punctuation">{</span> <span class="token punctuation">}</span> </code></pre> <h2>2.2 判断</h2>跟其他语言一样,判断有大于(>) 、小于(<) 、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)
<pre><code class="lang-go hljs"><span class="token keyword">if</span> i<span class="token operator">></span><span class="token number">10</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> </code></pre> <h2>3.3 选择</h2> <pre><code class="lang-go hljs"> <span class="token keyword">switch</span> a <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">1</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">"a为1"</span><span class="token punctuation">)</span> <span class="token keyword">case</span> <span class="token number">2</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">"a为2"</span><span class="token punctuation">)</span> <span class="token keyword">default</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">"a不确定"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre> <h1>3. 基本语法</h1> <h2>3.1 定义常量、全局变量、局部变量</h2>定义常量使用 <code>const</code> 关键字
<pre><code class="lang-go hljs"><span class="token keyword">const</span> a <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">1</span> <span class="token comment">//必须要赋初值</span> </code></pre>全局变量,全局变量是在函数外定义并且必须要有<code>var</code>关键字
<pre><code class="lang-go hljs"><span class="token keyword">var</span> b <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">10</span> <span class="token comment">//可以不用赋初值</span> </code></pre>局部变量,也就是在函数中定义的变量,可以省略 <code>var</code>关键字
<pre><code class="lang-go hljs"><span class="token keyword">var</span> c <span class="token builtin">int</span> <span class="token operator">=</span> <span class="token number">1</span> <span class="token comment">//最保守的写法</span> <span class="token keyword">var</span> c <span class="token operator">=</span> <span class="token number">1</span> <span class="token comment">// 省略类型,让编译器自己判断</span> c <span class="token operator">:=</span> <span class="token number">1</span> <span class="token comment">//省略var关键字和类型,比较方便</span> </code></pre>注意:在go中 <code>_</code> 这个小下划线被称为废弃数,如果某个值赋值给它则此值就被废弃不再使用了
<h2>3.2 定义数组、切片、map</h2> <ul><li>定义数组,</li></ul><pre><code class="lang-go hljs"><span class="token comment">// 定义了一个大小为10的数组</span> <span class="token keyword">var</span> ids <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">]</span><span class="token builtin">int</span> <span class="token comment">// 初始全为 0 </span> </code></pre> <ul><li>定义切片</li></ul><pre><code class="lang-go hljs"><span class="token comment">//切片与数组最大的不同就是,切片是变长的,它的容量可以自动扩充</span> <span class="token keyword">var</span> splice <span class="token operator">=</span> <span class="token function">make</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">int</span>,<span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment">// 指定切片大小</span> <span class="token keyword">var</span> splice <span class="token operator">=</span> <span class="token function">make</span><span class="token punctuation">(</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">3</span><span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment">// 指定切片大小和容量</span> </code></pre>len 是这个切片初始化时的大小
cap 是这个切片的容量,当len大于cap时,此切片就会扩容,扩容为此时的cap的2倍
go语言中只要一个实体实现了接口中的所有方法,那么这个实体就是实现了这个接口
<pre><code class="lang-go hljs"><span class="token keyword">type</span> person <span class="token keyword">struct</span> <span class="token punctuation">{</span> <span class="token builtin">string</span> name <span class="token punctuation">}</span> <span class="token comment">// 让person 实现 Ising 接口</span> <span class="token keyword">func</span> <span class="token punctuation">(</span>p <span class="token operator">*</span>person<span class="token punctuation">)</span> <span class="token function">sing</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>p<span class="token punctuation">.</span>name<span class="token operator"> </span><span class="token string">"在唱歌"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">// 使用</span> p <span class="token operator">:=</span> <span class="token function">new</span><span class="token punctuation">(</span>person<span class="token punctuation">)</span> p<span class="token punctuation">.</span>name <span class="token operator">=</span> <span class="token string">"pibigstar"</span> p<span class="token punctuation">.</span><span class="token function">sing</span><span class="token punctuation">(</span><span class="token punctuation">)</span> </code></pre> <h1>4. 异常</h1> <h2>4.1 异常处理</h2>go语言中一般都是把错误当成返回值给调用的函数
<pre><code class="lang-go hljs"><span class="token keyword">func</span> <span class="token function">test</span><span class="token punctuation">(</span>name <span class="token builtin">string</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 builtin">error</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token builtin">string</span><span class="token operator">==</span><span class="token string">""</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">,</span>eroors<span class="token punctuation">.</span><span class="token function">New</span><span class="token punctuation">(</span><span class="token string">"name cannot is null"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> m<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token boolean">nil</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <h2>4.2 中断程序</h2>当调用panic() 函数,该出错线程就会停止,而有的时候我们不想让它停止,我们可以 使用recover() 来恢复它
<pre><code class="lang-go hljs"> <span class="token comment">// 不让线程终止</span> <span class="token keyword">defer</span> <span class="token keyword">func</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> r <span class="token operator">:=</span><span class="token function">recover</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> r<span class="token operator">!=</span><span class="token boolean">nil</span><span class="token punctuation">{</span> log<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"hava a error"</span><span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token function">panic</span><span class="token punctuation">(</span>err<span class="token punctuation">)</span> </code></pre> <h2>4.3 defer 函数</h2>这个函数有点类似于java中的finally,都是在函数执行返回值之前做一些操作,一般都是执行一些关闭流的操作
<pre><code class="lang-go hljs"><span class="token keyword">defer</span> reader<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span> </code></pre> 到此这篇关于“Go语言入门(2)Go语言基础”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!您可能感兴趣的文章:
Golang 基础教程
想系统学习GO语言(Golang
2018年最全Go语言教程零基础入门到进阶实战视频
Go语言开发必读书目,从菜鸟到大牛必备
Go语言发展历史、核心、特性及学习路线
golang url 收集
Go语言笔记--基础(一)
Go语言-零基础入门视频教程
查看go 安装了哪些包_go语言基础入门(一)
Go语言的主要特性和发展影响