这是一个简单的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行结尾,但是它没有任何改变注释我的围棋已安装在
C:\go
目录中,并且C:\go\bin
已添加到%PATH%
环境变量中;源代码T1.go
放置在C:\t\go
目录中,该目录与go安装目录不同。不知道此配置是否会导致此问题。
最佳答案
您的十六进制转储表明您正在使用T1.go
文件中的回车符(U + 000D)而不是LineFeeds(U + 000A)。在Mac中,仅将CR用作行尾是一种古老的方法。
specification声明换行符是单个换行符。由于找不到此内容,因此解析器假定所有内容都写在同一行上。在这种情况下,编译器要求您实际键入分号。
解决方案
将您的CR更改为LF,它应该可以工作。
如果使用Notepad ++,则可以在菜单编辑-EOL转换-Unix / OSX格式中进行此转换。go fmt
不会将CR转换为LF,但是可以将CRLF转换为LF。dos2unix
也是如此。在您的情况下,它应该与mac2unix
一起使用。
关于go - 简单的golang程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61219123/