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


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


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


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

相关文章
|
7天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
35 10
|
5天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
7天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
27 10
|
7天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
4天前
|
存储 监控 数据可视化
Go 语言打造公司监控电脑的思路
在现代企业管理中,监控公司电脑系统对保障信息安全和提升工作效率至关重要。Go 语言凭借其高效性和简洁性,成为构建监控系统的理想选择。本文介绍了使用 Go 语言监控系统资源(如 CPU、内存)和网络活动的方法,并探讨了整合监控数据、设置告警机制及构建可视化界面的策略,以满足企业需求。
20 1
|
11天前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
8天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
4月前
|
开发框架 安全 中间件
Go语言开发小技巧&易错点100例(十二)
Go语言开发小技巧&易错点100例(十二)
56 1
|
1月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
1月前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID