上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测试结果