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

Go语言入门(2)Go语言基础

发布时间:2021-12-02   编辑:jiaochengji.com
教程集为您提供Go语言入门(2)Go语言基础等资源,欢迎您收藏本站,我们将为您提供最新的Go语言入门(2)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>1. 基础数据类型</h1> <ul><li>数字类型: 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数</li><li>布尔型: true、false</li><li>派生类型:
(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倍

<ul><li>定义 map</li></ul><pre><code class="lang-go hljs"><span class="token comment">// 定义一个map,key为string类型,value为int类型</span> <span class="token keyword">var</span> m <span class="token operator">=</span> <span class="token function">make</span><span class="token punctuation">(</span><span class="token keyword">map</span><span class="token punctuation">[</span><span class="token builtin">string</span><span class="token punctuation">]</span><span class="token builtin">int</span><span class="token punctuation">)</span> <span class="token comment">// 使用</span> m<span class="token punctuation">[</span><span class="token string">"age"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">18</span> </code></pre> <h2>
3.3 定义派生类型</h2> <ul><li>定义结构体,也就是java中的bean对象</li></ul><pre><code class="lang-go hljs"><span class="token keyword">type</span> person <span class="token keyword">struct</span><span class="token punctuation">{</span> id <span class="token builtin">int</span> name <span class="token builtin">string</span> age <span class="token builtin">int</span> <span class="token punctuation">}</span> </code></pre> <ul><li>定义接口</li></ul><pre><code class="lang-go hljs"><span class="token keyword">type</span> Ising <span class="token keyword">interface</span> <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> </code></pre> <ul><li>实现接口</li></ul>

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语言的主要特性和发展影响

[关闭]
~ ~