您好,匿名用户
随意问技术百科期待您的加入

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

+2 投票

新手学习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
用户头像 提问 2013年 1月9日 @ Wukong 上等兵 (475 威望)
分享到:

1个回答

+1 投票
 
最佳答案

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

用户头像 回复 2013年 1月9日 @ Ares 上等兵 (353 威望)
选中 2013年 1月9日 @Janna
提一个问题:

相关问题

0 投票
1 回复 29 阅读
0 投票
1 回复 45 阅读
+3 投票
1 回复 249 阅读
用户头像 提问 2012年 12月27日 @ 苏尐沫 上等兵 (212 威望)
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Sejuani 上等兵 (427 威望)
0 投票
1 回复 66 阅读
用户头像 提问 2012年 12月1日 @ Talon 上等兵 (294 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...