Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的golang程序没有';跑不动_Go - Fatal编程技术网

简单的golang程序没有';跑不动

简单的golang程序没有';跑不动,go,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 wo

下面是一个简单的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位windows7上,golang版本是
devel+f4d1cb8d9a91
1.2rc1。错误代码在计算机上运行正常

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


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

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

十六进制转储显示您在
T1.go
文件中使用回车符(U+000D)而不是换行符(U+000A)。仅使用CR作为行尾是一种旧的Mac方式

声明新行是单行换行字符。由于找不到它,解析器假定它都写在同一行上。在这种情况下,编译器要求您实际键入分号

解决方案

把你的CR换成LF,它应该能工作

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

go-fmt
不会将CR转换为LF,但会将CRLF转换为LF。

这同样适用于
dos2unix
。在您的情况下,它应该与
mac2unix

配合使用。我上传了一段视频,记录了go的怪异体验:发布源代码的十六进制转储。我打赌你使用的是一个奇怪的编辑器,它会给你的代码带来难看的东西。我使用notepad2和notepad++,两者的结果都是一样的。视频中显示的hello.go文件的十六进制转储:,以及视频中显示的T1.go文件的十六进制转储:谢谢@ANisus。真奇怪,我不明白这是怎么回事。但无论如何,我尝试了mac2unix,现在在解析阶段没有错误报告。但它会显示“go.exe已停止工作”对话框,就像视频中显示的“hello.go”文件一样。@green一个问题解决,一个问题解决!我的答案只涉及T1.go。视频中的错误是另一个困扰我的问题。如果我有一些理论,我会回来;)