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

Go语言基础之map

发布时间:2022-01-27   编辑:jiaochengji.com
教程集为您提供Go语言基础之map等资源,欢迎您收藏本站,我们将为您提供最新的Go语言基础之map资源
<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语言基础之map</h1>

GO语言学习教程
www.lsdcloud.com

<h2>
概述</h2> <ul><li>map是基于key-value键值对的无序的集合</li><li>Go语言中的map是引用类型</li><li>必须初始化才能使用。</li></ul><h2>map定义</h2> <pre><code class="lang-go hljs"><span class="token keyword">map</span><span class="token punctuation">[</span>KeyType<span class="token punctuation">]</span>ValueType </code></pre> <ul><li>KeyType:表示键的类型。</li><li>ValueType:表示键对应的值的类型。</li></ul>

map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:

<pre><code class="lang-go hljs"><span class="token function">make</span><span class="token punctuation">(</span><span class="token keyword">map</span><span class="token punctuation">[</span>KeyType<span class="token punctuation">]</span>ValueType<span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token builtin">cap</span><span class="token punctuation">]</span><span class="token punctuation">)</span> </code></pre>

其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。

<h2>
判断某个键是否存在</h2>

Go语言中有个判断map中键是否存在的特殊写法,ok 为true则存在 否则不存在。格式如下:

<pre><code class="lang-go hljs">value<span class="token punctuation">,</span> ok <span class="token operator">:=</span> <span class="token keyword">map</span><span class="token punctuation">[</span>key<span class="token punctuation">]</span> </code></pre> <h2>
map的遍历</h2>

Go语言中使用for range遍历map。

<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> scoreMap <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> scoreMap<span class="token punctuation">[</span><span class="token string">"张三"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">90</span> scoreMap<span class="token punctuation">[</span><span class="token string">"李四"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">100</span> scoreMap<span class="token punctuation">[</span><span class="token string">"王五"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">60</span> <span class="token keyword">for</span> k<span class="token punctuation">,</span> v <span class="token operator">:=</span> <span class="token keyword">range</span> scoreMap <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <h2>
使用delete()函数删除键值对</h2>

使用delete()内建函数从map中删除一组键值对,delete()函数的格式如下:

<pre><code class="lang-go hljs"><span class="token function">delete</span><span class="token punctuation">(</span><span class="token keyword">map</span><span class="token punctuation">,</span> key<span class="token punctuation">)</span> </code></pre>

其中:

<ul><li>map:表示要删除键值对的map</li><li>key:表示要删除的键值对的键</li></ul><h2>
map综合举例使用说明</h2> <pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token string">"fmt"</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> <span class="token comment">//初始化一个map 长度为10</span> lmMap<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">string</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment">//给lmMap赋值 相当于java的map.put(k,v)</span> lmMap<span class="token punctuation">[</span><span class="token string">"sex"</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string">"男"</span> lmMap<span class="token punctuation">[</span><span class="token string">"age"</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string">"30"</span> lmMap<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string">"福小林"</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>lmMap<span class="token punctuation">)</span> <span class="token comment">//map[age:30 name:福小林 sex:男]</span> <span class="token comment">//取出map中key="name"的值</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>lmMap<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">//福小林</span> <span class="token comment">//判断某个键是否存在</span> value<span class="token punctuation">,</span> ok <span class="token operator">:=</span> lmMap<span class="token punctuation">[</span><span class="token string">"sex"</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">"lmMap中是否存在sex为key的值"</span><span class="token punctuation">,</span>ok<span class="token punctuation">)</span> <span class="token comment">//true</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span><span class="token string">"lmMap[\"sex\"]="</span><span class="token operator"> </span>value<span class="token punctuation">)</span> <span class="token comment">//初始化map 暂时定义key为名字 value为分数</span> scoreMap <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> scoreMap<span class="token punctuation">[</span><span class="token string">"张三"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">88</span> scoreMap<span class="token punctuation">[</span><span class="token string">"李四"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">95</span> scoreMap<span class="token punctuation">[</span><span class="token string">"王五"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">57</span> <span class="token comment">//循环遍历scoreMap</span> <span class="token keyword">for</span> k<span class="token punctuation">,</span>v <span class="token operator">:=</span> <span class="token keyword">range</span> scoreMap <span class="token punctuation">{</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span>v<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token comment">//删除scoreMap["张三"]</span> <span class="token function">delete</span><span class="token punctuation">(</span>scoreMap<span class="token punctuation">,</span><span class="token string">"张三"</span><span class="token punctuation">)</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>scoreMap<span class="token punctuation">)</span> <span class="token comment">// 元素为map类型的切片数组</span> <span class="token comment">//s1是一个数组切片 不过每个数组元素为map类型</span> <span class="token keyword">var</span> s1<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 keyword">map</span><span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">]</span><span class="token builtin">string</span><span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment">//初始化s1切片的第一个元素map容量为3</span> s1<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><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">int</span><span class="token punctuation">]</span><span class="token builtin">string</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment">//不初始化 panic: assignment(分配) to entry in nil map</span> s1<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><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">int</span><span class="token punctuation">]</span><span class="token builtin">string</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">)</span> s1<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string">"第一个"</span> <span class="token comment">//s1[0]的类型是map s1[0][10] 相当于这个map的key为10 值为第一个</span> s1<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">22</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token string">"two"</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>s1<span class="token punctuation">[</span><span class="token number">0</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>s1<span class="token punctuation">)</span> <span class="token punctuation">}</span> </code></pre> <h2>map总结</h2> <ul><li>

map必须借助make分配内存空间,否则是nil

</li><li>

字面量初始化必修保证key是唯一的,否则error

</li><li>

map传递的是引用,就是说形参会改变实参的值

</li><li>

直接对map对象使用[]操作符获得的对象不能直接修改状态

</li><li>

map中存储指针而不是结构体

GO语言学习教程
www.lsdcloud.com

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

您可能感兴趣的文章:
想系统学习GO语言(Golang
Go语言发展历史、核心、特性及学习路线
应用编程基础课第三讲:Go编程基础
Go基础编程:Map
2018年最全Go语言教程零基础入门到进阶实战视频
go 获取函数地址_Go语言基础--接口浅析
Go语言基础、实战
go语言基础语法
Go语言基础教程——map篇
golang key map 所有_golang之map

[关闭]
~ ~