简单的golang程序不运行

时间:2013-10-18 01:52:35

标签: go

这是一个简单的golang脚本T1.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello world")
}

go run T1.go运行它,我得到:

T1.go:1:15: expected ';', found 'import'

如果我将;添加到行尾,程序可以运行:

package main;

import "fmt";

func main() {
    fmt.Println("Hello world")
}

但是不是以golang结尾的分号冗余吗?

PS:我在64位窗口7上,golang版本是devel +f4d1cb8d9a91 1.2rc1 错误代码在http://play.golang.org/

上运行完美

更新我使用dos2unix将源代码转换为unix行结尾,但它不会改变任何内容

备注我的go已安装在C:\go目录中,C:\go\bin已添加到%PATH%环境变量中;源代码T1.go放在C:\t\go目录中,该目录与go安装目录不同。不确定此配置是否会导致此问题。

2 个答案:

答案 0 :(得分:7)

您的十六进制转储显示您在T1.go文件中使用回车字符(U + 000D)而不是LineFeeds(U + 000A)。仅使用CR作为End-of-line是一种古老的Mac方式。

specification表示新行是单换行符。由于未找到,因此解析器假定它全部写在同一行上。在这种情况下,编译器要求您实际输入分号。

<强>解决方案

将您的CR更改为LF,它应该可以正常工作。

如果您使用Notepad ++,则可以在菜单Edit - EOL Conversion - Unix / OSX Format中进行此转换。

go fmt不会将CR转换为LF,而会将CRLF转换为LF dos2unix也是如此。在您的情况下,它应该与mac2unix一起使用。

答案 1 :(得分:-2)

听起来像1.2rc1版本中的错误。试试1.2rc2并查看问题是否仍然存在。