「连载」最最通俗易懂,并带小说情节的Go语言入门教程(连载四),没有之一,不接受反驳

简介: 「连载」最最通俗易懂,并带小说情节的Go语言入门教程(连载四),没有之一,不接受反驳

这篇是 Go 语言通俗小说入门教程之四,前篇请戳

最最通俗易懂,并带小说情节的Go语言入门教程,没有之一,不接受反驳

最最通俗易懂,并带小说情节的Go语言入门教程(连载二)

最最通俗易懂,并带小说情节的Go语言入门教程(连载三)


上回说道三胎不讲武德,硬干了三姨太的丫环,导致王麻子给他分配的住房不够了。


幸得祖师爷帮忙,给了他名为slice的法宝,可以动态分配住房,还被张三吐槽人家其他地方叫动态数组,他们祖师爷还非出风头,起个slice的名堂。


王麻子自是不想与张三计较,于是继续向祖师爷请教。


今日祖师爷兴致很高,便得意的在王麻子面前拿出了新玩意,Map。


祖师爷看着王麻子,语重心长的说,“鸟是鸟他妈生的,虫子是虫他妈生的,既然生了,就要给人家起个名字。天天1, 2, 3 ,4 的喊也不对,你说呢?”


既然祖师爷说了,王麻子自是不敢言语,唯有点头。


王麻子自付道:“饶是如此,怎么起名字?当初也就给他们一大家可以起个名字,`var 三娃子的姨太太们 [3] string`,想起名字也没地方啊。”


祖师爷似乎看穿了王麻子的想法,从怀里拿出了一个法宝。


此法宝似一串串小盒子,每个盒子上配一把钥匙,只是不知内为何物。


祖师爷笑着说道,“这叫`Map`。你需要如此如此使用。”,王麻子听后似懂非懂。


祖师爷说,“回家慢慢研究吧,我得回西方了。最近我们那里的佛祖与东方的佛祖互不对付,我呆久了容易被疑心叛界之罪。”


王麻子深深一拜,“祖师爷您只管回去,我自行研究就好了”。


话说这王麻子本资质一般,于是只得硬着头皮研究一番。


```go
var 变量名 map[钥匙数据类型] 数据的数据类型
```


王麻子因为有以前的基础,虽资质愚钝,但是也能明白一二。


于是口中念念有词:

```go
/* 声明变量,默认 map 是 nil */
var 三娃子姨太太们 map [string] string
/* 使用 make 函数初始化 */
三娃子姨太太们 = make(map [string] string)
```

只见王麻子眼前竟然来了一串和祖师爷给他的一样的盒子,每个盒子上有一把钥匙。


王麻子继续念道:


```go
三娃子姨太太们["李氏"] = "如花"
三娃子姨太太们["赵氏"] = "二妮"
三娃子姨太太们["丑氏"] = "俊俊"
```

王麻子眼睛一睁,三娃子的姨太太们竟然都来了,兴匆匆的拿回了自己的钥匙,竟各自又跑回去了。


王麻子望着背影大喊,“都拿好嘅,不然我找不到你们了。”


姨太太们自顾自离去了,王麻子叹了口气,人多不好管。


张三听到王麻子叫唤,自是跑了过来。


“还嘅,嘅,我呸,这是西洋物,key,知道吗?”张三嘲讽的和王麻子说。


王麻子担心姨太太们听到笑话,脸憋的通红,“我自说的是Key,你耳朵听错了而已。”


说完悻悻地走了。


张三似乎又得逞了,把手往袖子里一插,得意的笑着,躺在了王麻子家院子外的树下,耳朵支棱起来。


王麻子以为张三走了,偷偷的拿出来祖师爷给的卷轴,只见还有几行咒语:

```go
 /*删除元素*/
 delete(三娃的姨太太们, "丑氏")
```

王麻子四周看了看,竟然这次什么也没发生。


于是王麻子继续念到:

```go
delete(三娃的姨太太们, "李氏")
delete(三娃的姨太太们, "赵氏")
```

依然什么也没有发生,王麻子略对祖师爷有点失望。


不一会只见三娃哭着过来说,“老爷,大事不好了!”


王麻子略带嫌弃的说:“一个大男人成天哭哭啼啼的成何体统?” ,说着往门外瞅了瞅,他看见张三还在,于是压低声音问:


“别哭了,发生什么事了?”


三娃子说“我的媳妇每人从你这拿了一个钥匙回去后,刚开始还各自玩的好好的,怎地都突然不见了。先是俊俊,后来是如花,后来是二妮,都突然从我眼前消失了。”


王麻子此时突然恍然大悟,但是碍于面子,于是假装镇静的说,“媳妇而已,不见了我再给你娶,犯得着哭哭啼啼,让外人笑话吗?”,说着向三娃子示意外头有人。


三娃子自是伤心难耐,那顾得上这些,自顾自的嚎头大哭。


王麻子哄他说,祖师爷还给我一个法宝,我自是用不着,你可以拿这个法宝把他们找回来。


说着拿了出来。只见这个法宝看上去像一把尺子。

>  Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。

```go
package main
import "fmt"
func main() {
    //这是我们使用range去求一个slice的和。使用数组跟这个很类似
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)
    //在数组上使用range将传入index和值两个变量。上面那个例子我们不需要使用该元素的序号,所以我们使用空白符"_"省略了。有时侯我们确实需要知道它的索引。
    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }
    //range也可以用在map的键值对上。
    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }
    //range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}
```


三娃子一思忖,拿这个找老婆自然效率高,于是开心的走了。


王麻子看见三娃子走了,心想这不见了就不见了吧,能找回来了?


(欲听后续,敬请关注注本号。如果觉得有点意思,别忘了转发点赞哦!👇)

相关文章
|
4天前
|
存储 Go API
一个go语言编码的例子
【7月更文挑战第2天】本文介绍Go语言使用Unicode字符集和UTF-8编码。Go中,`unicode/utf8`包处理编码转换,如`EncodeRune`和`DecodeRune`。`golang.org/x/text`库支持更多编码转换,如GBK到UTF-8。编码规则覆盖7位至21位的不同长度码点。
70 1
一个go语言编码的例子
|
7天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
17 2
在go语言中调试程序
|
5天前
|
安全 Go
Go语言的iota关键字有什么用途?
**Go语言中的`iota`是常量生成器,用于在`const`声明中创建递增的常量。`iota`在每个新的`const`块重置为0,然后逐行递增,简化了枚举类型或常量序列的定义。例如,定义星期枚举:** ```markdown ```go type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... ) ``` 同样,`iota`可用于定义不同组的常量,如状态码和标志位,保持各自组内的递增,提高代码可读性。
|
1天前
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
8 0
|
5天前
|
IDE Linux Go
记录一个go语言与IDE之间的问题
【7月更文挑战第1天】本文介绍在IDE中调试Go应用可能遇到的问题。当问题与IDE的自动完成有关,可以试着使用其他编辑器如Linux的vim是否无此问题。这可以验证表明IDE可能不完全兼容最新语言版本,建议使用无自动检测工具临时解决。
22 0
|
9天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
10天前
|
编译器 Go 开发者
|
14天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
11天前
|
Go
go语言map、实现set
go语言map、实现set
14 0
|
11天前
|
Go
go语言数组与切片
go语言数组与切片
17 0