2个内容相同的go语言源程序,一个能够编译,另一个却报错了,求解?

新手学习golang,写了个斐波那契数列计算程序(内容见下),刚开始时编译成功了,运算正常。后来改了下:增加了些东西,把文件名也改了,再编译时报错了,最后再把文件内容改回到刚编译成功时的内容,仍然编译报错。然后又新写了个同样的内容的程序,编译成功。现在,2个两样内容的源程序,一个能够编译,另一个编译则报错。
报错的一个为fib_test.go

love@oss122:~>  cat fib_test.go
package main

import "fmt"

func fib(n int) (ret int) {
	if n < 2 {
		return n
	} else {
		return fib(n-1) + fib(n-2)
	}
	return
}

func main() {
	var result int
	result = fib(40)
	if result > 0 {
		fmt.Printf("fib(40)= %d", result)
	}
}

编译时报错信息:

love@oss122:~> go build fib_test.go 
# command-line-arguments
runtime.main: undefined: main.init
runtime.main: undefined: main.main

另一个内容相同的文件为

love@oss122:~> cat fib_test_gofmt.go
package main

import "fmt"

func fib(n int) (ret int) {
	if n < 2 {
		return n
	} else {
		return fib(n-1) + fib(n-2)
	}
	return
}

func main() {
	var result int
	result = fib(40)
	if result > 0 {
		fmt.Printf("fib(40)= %d", result)
	}
}

能够成功编译:

love@oss122:~> diff fib_test.go fib_test_gofmt.go 
love@oss122:~> 

love@oss122:~> go build fib_test_gofmt.go 
love@oss122:~> ll fib_test_gofmt
-rwxr-xr-x 1 love users 1270385  1月  9 19:14 fib_test_gofmt
love@oss122:~> time ./fib_test_gofmt
fib(40)= 102334155
real	0m3.554s
user	0m3.546s
sys	0m0.004s
阅读 9.7k
2 个回答

golang中文件名是有用的,文件名后缀为_test.go的都是单元测试文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏