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


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


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


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

目录
打赏
0
0
0
0
3
分享
相关文章
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
初探Go语言RPC编程手法
总的来说,Go语言的RPC编程是一种强大的工具,让分布式计算变得简单如同本地计算。如果你还没有试过,不妨挑战一下这个新的编程领域,你可能会发现新的世界。
65 10
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
83 3
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
阿里双十一背后的Go语言实践:百万QPS网关的设计与实现
解析阿里核心网关如何利用Go协程池、RingBuffer、零拷贝技术支撑亿级流量。 重点分享: ① 如何用gRPC拦截器实现熔断限流; ② Sync.Map在高并发读写中的取舍。
186 1
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
178 5
Go语言开发
【10月更文挑战第26天】Go语言开发
101 3
|
8月前
|
Go语言的开发
【10月更文挑战第25天】Go语言的开发
98 3
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问