自己动手写Java虚拟机
上QQ阅读APP看书,第一时间看更新

1.4 测试本章代码

在ch01目录下创建main.go文件,然后输入下面的代码。

package main

import "fmt"

func main() {
cmd := parseCmd()
if cmd.versionFlag {
  fmt.Println("version 0.0.1")
} else if cmd.helpFlag —— cmd.class == "" {
  printUsage()
} else {
  startJVM(cmd)
}
}

注意,与cmd.go文件一样,main.go文件的包名也是main。在Go语言中,main是一个特殊的包,这个包所在的目录(可以叫作任何名字)会被编译为可执行文件。Go程序的入口也是main()函数,但是不接收任何参数,也不能有返回值。

main()函数先调用ParseCommand()函数解析命令行参数,如果一切正常,则调用startJVM()函数启动Java虚拟机。如果解析出现错误,或者用户输入了-help选项,则调用PrintUsage()函数打印出帮助信息。如果用户输入了-version选项,则输出(一个滥竽充数的)版本信息。因为我们还没有真正开始编写Java虚拟机,所以startJVM()函数暂时只是打印一些信息而已,代码如下:

func startJVM(cmd *Cmd) {
fmt.Printf("classpath:%s class:%s args:%v\n",
  cmd.cpOption, cmd.class, cmd.args)
}

打开命令行窗口,执行下面的命令编译本章代码。

go install jvmgo\ch01

命令执行完毕后,如果没有看到任何输出就证明编译成功了,此时在D:\go\workspace\bin目录下会出现ch01.exe文件。现在,可以用各种参数进行测试。笔者的测试结果如图1-5所示。

图1-5 ch01.exe测试结果