「连载」最最通俗易懂,并带小说情节的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)
    }
}
```


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


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


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

相关文章
|
1天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解goroutines和channels####
本文旨在探讨Go语言中并发编程的核心概念——goroutines和channels。通过分析它们的工作原理、使用场景以及最佳实践,帮助开发者更好地理解和运用这两种强大的工具来构建高效、可扩展的应用程序。文章还将涵盖一些常见的陷阱和解决方案,以确保在实际应用中能够避免潜在的问题。 ####
|
1天前
|
测试技术 Go 索引
go语言使用 range 关键字遍历
go语言使用 range 关键字遍历
12 3
|
1天前
|
测试技术 Go 索引
go语言通过 for 循环遍历
go语言通过 for 循环遍历
10 3
|
3天前
|
安全 Go 数据处理
Go语言中的并发编程:掌握goroutine和channel的艺术####
本文深入探讨了Go语言在并发编程领域的核心概念——goroutine与channel。不同于传统的单线程执行模式,Go通过轻量级的goroutine实现了高效的并发处理,而channel作为goroutines之间通信的桥梁,确保了数据传递的安全性与高效性。文章首先简述了goroutine的基本特性及其创建方法,随后详细解析了channel的类型、操作以及它们如何协同工作以构建健壮的并发应用。此外,还介绍了select语句在多路复用中的应用,以及如何利用WaitGroup等待一组goroutine完成。最后,通过一个实际案例展示了如何在Go中设计并实现一个简单的并发程序,旨在帮助读者理解并掌
|
2天前
|
Go 索引
go语言按字符(Rune)遍历
go语言按字符(Rune)遍历
13 3
|
6天前
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
26 4
|
4天前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
15 0
|
13天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
33 2
|
11天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
21 2
|
11天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
24 2
下一篇
无影云桌面