说实话,我写这篇文的时候,电脑正开着 VS Code,旁边摆着半杯凉掉的咖啡,我本来想用 golang 写个爬虫去抓点数据,结果手一滑,开始琢磨起“j博士和詹姆斯谁厉害”这个老话题,既然都写到这了,干脆用 golang 的语法和逻辑来拆解一下,看看这两个人到底谁更“能打”。
先定义结构体:j博士和詹姆斯
在 golang 里,写东西得先定义数据结构,我脑子里马上蹦出一个 struct:
type Player struct {
Name string
Era string
TotalScore int
TotalRebound int
TotalAssist int
ChampionshipCount int
StyleTag []string
}
j博士——朱利叶斯·欧文,NBA 的祖师爷级别,70年代末到80年代初的空中飞人,詹姆斯——勒布朗·詹姆斯,21世纪的天选之子,从2003年打到现在的铁人。
如果我们用 golang 初始化两个实例:
j博士 := Player{
Name: "Julius Erving",
Era: "1970s-1980s",
TotalScore: 30026,
TotalRebound: 10525,
TotalAssist: 5176,
ChampionshipCount: 3,
StyleTag: []string{"flying", "pioneer", "ABA传奇"},
}
詹姆斯 := Player{
Name: "LeBron James",
Era: "2000s-2020s",
TotalScore: 40000+,
TotalRebound: 11000+,
TotalAssist: 11000+,
ChampionshipCount: 4,
StyleTag: []string{"all-around", "durability", "basketball IQ"},
}
数据一摆,感觉詹姆斯在“总量”上明显占优,但等等,golang 有个好处——它能提醒你不要把不同类型的数据直接比较,年代不同,比赛节奏不同,防守强度不同,连三分线都有过改动,就像你不能把 int 和 string 直接加一起,编译器会报错。
用 golang 的逻辑写比较函数
我试着写个函数来判断谁更厉害:
func ComparePlayer(p1, p2 Player) string {
if p1.ChampionshipCount > p2.ChampionshipCount {
return p1.Name + " 总冠军更多"
} else if p1.ChampionshipCount < p2.ChampionshipCount {
return p2.Name + " 总冠军更多"
} else {
return "冠军数一样,看其他维度"
}
}
但刚写完我就笑了——这种比较太粗鲁,在 golang 里,你真要对比两个结构体,得一个一个字段来,但“厉害”这种事,不是简单的数值比较。

你看j博士:他改变了篮球的观赏性,把“扣篮”从得分手段变成了艺术,没有j博士,可能就没有后面的乔丹、科比、卡特,而詹姆斯?他是数据全面到离谱的“系统型球员”,从一号位打到五号位,带着不同的队伍拿冠军。
表格拉出来对比一下
| 维度 | j博士 | 詹姆斯 |
| 总得分 | 30000+ | 40000+ |
| 总篮板 | 10000+ | 11000+ |
| 总助攻 | 5000+ | 11000+ |
| 总冠军 | 3个(含ABA) | 4个 |
| MVP次数 | 4次 | 4次 |
| 全明星次数 | 11次(ABA)+ 11次(NBA) | 20次+ |
| 影响力关键词 | 创新、优雅、空中漫步 | 统治、持久、全能 |
你看,数据上詹姆斯确实占优,但“厉害”这个词在 golang 里不能被直接 比较。
用“接口思维”来看
在 golang 里,我们经常用接口来做抽象:
type Legend interface {
Influence() string
Dominance() string
Legacy() string
}
j博士实现了 Influence() —— 它返回“改变了篮球的飞行动作”,詹姆斯实现了 Dominance() —— 它返回“20年如一日统治联盟”。而Legacy(),两个人都能返回“历史前十”。
如果非要加个条件判断:
if 时代背景考虑 {
fmt.Println("j博士是开创者,詹姆斯是集大成者")
}
我就是觉得,没法用一个简单的 > 来定胜负,就像 golang 里你不能把两个不同版本的库直接比较一样——上下文不一样,结果没有意义。
生活里的真实感受
我打篮球不多,但看球超过20年,我小时候看j博士的集锦,觉得那家伙像鸟一样飞,后来看詹姆斯比赛,觉得那家伙像坦克一样冲,两种风格,就像 golang 里的 map 和 slice——都是好东西,但用途不同。
你要是问我,j博士和詹姆斯谁更厉害?我可能会说:j博士定义了“飞”,詹姆斯定义了“全面”,就像在 golang 里,你不能说 string 比 int 更高级——它们只是不同类型,用在不同的地方。
写完这段,我杯子里的咖啡已经凉透了,我还没决定谁更厉害,但我决定再续一杯热水,毕竟,讨论这种问题,比写代码还累。
本文来自作者[kyadmin]投稿,不代表678体育 - 全网热门体育赛事高清直播平台立场,如若转载,请注明出处:http://www.yuanlikao.com/jk/313.html
评论列表(4条)
我是678体育 - 全网热门体育赛事高清直播平台的签约作者“kyadmin”!
希望本篇文章《用 golang 写篇文章,j博士和詹姆斯谁厉害》能对你有所帮助!
本站[678体育 - 全网热门体育赛事高清直播平台]内容主要涵盖:678体育,678体育官网,678赛事直播
本文概览:说实话,我写这篇文的时候,电脑正开着VSCode,旁边摆着半杯凉掉的咖啡,我本来想用golang写个爬虫去抓点数据,结果手一滑,...