登录
首页 >  Golang >  Go问答

简单的 golang 程序无法运行

来源:Golang技术栈

时间:2023-04-16 21:38:38 165浏览 收藏

大家好,我们又见面了啊~本文《简单的 golang 程序无法运行》的内容中将会涉及到golang等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

这是一个简单的 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:我在 64bit window 7,golang 版本是devel +f4d1cb8d9a91or 1.2rc1错误代码在 http://play.golang.org/上运行完美

****我用来dos2unix将源代码转换为 unix 行尾的 更新,但它并没有改变任何东西

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

正确答案

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

规范声明新行是一个换行符。由于没有找到,解析器假定它都写在同一行。在这种情况下,编译器要求您实际输入分号。

解决方案

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

如果您使用 Notepad++,您可以在菜单编辑 - EOL 转换 - Unix/OSX 格式中进行此转换。

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

到这里,我们也就讲完了《简单的 golang 程序无法运行》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>