《Go语言编程》第四章完整示例问题

继续国庆前的关于《Go语言编程》本书的练习,报告问题,解决问题。
第四章的示例 一看风格应该是许式伟的,总体结构很清楚,跟第二章的示例一样的目录结构风格。
这章问题不多,

  1. 同样是因为编排问题的elseif
  2. 整个示例中因为是只演示部分功能,缺少了Room这个struct 编译的时候会出错,简单解决办法就是放置一空的struct
  3. 这一章最后一个错误,我发现在上一章也有,就是在切片的时候,容易忽略一个问题。

在cg/center.go 的removePlayer中有这样一段

if i == len( server.players) - 1{
                server.players=server.players[:i-1]
            }

意思就是在如果remove的player是最后一个的时候,就切片slice最开始到这个之前的,表面上看这是对的,但实际上切片如果写成players[:i]是不包括第i个的,所以这里会多删除一个player而且如果只有2个player的情况下这个就为空了。
Command>
listplayer
Failed. No player online.
所以修改成

if i == len( server.players) - 1{
                server.players=server.players[:i]
            }

以上结果是实例测试的,欢迎补充和说明。

查看回复