下面是一个简单的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")
}但是,线的分号不是多余的吗?
PS:我在64位窗口7,高亮版本是devel +f4d1cb8d9a91或1.2rc1。错误代码在http://play.golang.org/上运行得很好
更新了我使用dos2unix将源代码转换成unix行的结尾,但是它没有改变任何东西
Notes My安装在C:\go目录中,C:\go\bin被添加到%PATH%环境变量中;源代码T1.go放在C:\t\go目录中,这与go安装目录不同。不确定此配置是否导致了此问题。
发布于 2013-10-18 08:28:57
十六进制转储显示,您正在使用的是承载返回字符(U+000D),而不是T1.go文件中的LineFeeds (U+000A)。只使用CR作为终端机是一种老的Mac方式。
specification声明一个新行是一个单行提要字符。因为找不到这一点,所以解析器假设它都写在同一行上。在这种情况下,编译器要求您实际键入分号.
溶液
将您的CR更改为LF,它应该可以工作。
如果使用Notepad++,则可以使用Edit - EOL转换- Unix/OSX格式进行此转换。
go fmt不将CR转换为LF,而将CRLF转换为LF。
dos2unix也是如此。在您的例子中,它应该与mac2unix一起工作。
发布于 2013-10-18 06:16:11
听起来像是1.2rc1版本中的一个bug。试试1.2rc2,看看问题是否还存在。
https://stackoverflow.com/questions/19440301
复制相似问题