学习Golang中的编译错误
编译时的错误
Go是一种编译型语言。这意味着它将解析源代码并从中产生一个可执行的二进制文件。
编译器会根据严格定义的规则来解析代码。这使得Go程序的运行比运行时的解释更有效。
作为一个有价值的副作用,当程序被编译时,它会立即发现许多种类的错误(如错别字或无效的代码),而不是只在程序的特定部分被执行时才发现。
为了使这种早期验证的价值最大化,Go比大多数语言更严格,不会编译出其他语言会忽略的异常代码。例如,如果一个变量被声明但从未被使用,它将产生一个错误。在最好的情况下,这是死的代码,可能表明有一个更微妙的问题(如一个遗漏的语句)。它也可能是一个打字错误。无论哪种情况,Go都会告诉你这个问题,以便你在继续进行之前修复它。
编译器错误信息的结构
当Go编译器被要求编译无效的代码时,它将打印出一条错误信息。
编译器的错误信息将包括:
- 检测到错误的文件的名称。
- 该文件中出现错误的行号。
- 该行中发生错误的那一列。
例如,编译这个程序:
package main
func main() {
fmt.Println("Hello, world!")
}
将产生这个错误:
./main.go:4:3: undefined: fmt
其中 "main.go "是文件名,4是行号,3是列号。
这条信息表明,fmt 标识符没有被定义。这可以通过在 "package "语句后面添加一个import "fmt" 行来解决。
经验之谈
Go在编译源文件时,会严格检查语法错误、无效代码和其他异常情况。
如果发现问题,它会打印出一条错误信息,而且不会产生可执行的二进制文件。
你对Go的编译错误有什么经验?你如何将它与其他语言进行比较?