go - 简单的golang程序无法运行

标签 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行结尾,但是它没有任何改变

注释我的围棋已安装在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/

相关文章:

go - 从本地包中共享对象

google-app-engine - 将 Hugo 站点部署到 GAE 结果为 "internal error 13"

go - 什么时候指针的类型别名等同于go中的其他类型?

go - 使用 Go 从 html 中解析列表项

go - 如何在流拦截器中访问请求?

go - 无法将嵌套结构序列化为 json

docker - 使用 lint 命令构建 docker go 应用程序

go - 在部署 gcloud 时没有遇到 vendor 依赖项

google-app-engine - 如何验证 JWT 签名?

c - struct_ 前缀与无前缀