私は gccgo が初めてで、以下のコードをコンパイル/実行するのに助けが必要です (これは「標準の」go コンパイラで問題なく動作します (申し訳ありませんが、適切な命名法がわかりません)):
私のgcc:
nailor@macbuntu:*rgo/src/tictoc-demo$ gccgo -v
Using built-in specs.
COLLECT_GCC=gccgo
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-0ubuntu3' --with-bugurl=file:///usr/share/doc/gccgo-4.7/README.Bugs --enable-languages=c,c++,go --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-0ubuntu3)
私の最初のファイル:
nailor@macbuntu:*rgo/src/tictoc-demo$ cat tictoc.go
package tictoc
import "fmt"
import "time"
var ticTime = time.Now()
const default_section_name = "measurement"
var section_name = default_section_name
func Tic() {
TicM(default_section_name)
}
func TicM(name string) {
section_name = name
fmt.Printf("[%s] tic\n", section_name)
ticTime = time.Now()
}
func Toc() {
TocM("")
}
func TocM(message string) {
dur := time.Now().Sub(ticTime).Seconds()
fmt.Printf("[%s] [%s] toc %5f\n", section_name, message, dur)
}
func TocTic() {
Toc();
Tic();
}
func TocTicM(message string) {
Toc();
TicM(message);
}
私の2番目のファイル:
nailor@macbuntu:*rgo/src/tictoc-demo$ cat tictoc-demo.go
package main
import . "tictoc"
func main(){
Tic()
Toc()
Toc()
TicM("2nd tic")
Toc()
Toc()
TocM("Error")
Toc()
TocM("More Fancy")
Toc()
Toc()
TocTic()
Toc()
}
エラーのある私のコンパイル:
nailor@macbuntu:*rgo/src/tictoc-demo$ gccgo -c tictoc.go
nailor@macbuntu:*rgo/src/tictoc-demo$ gccgo -c tictoc-demo.go
nailor@macbuntu:*rgo/src/tictoc-demo$ gccgo -o tictoc-demo tictoc-demo.o tictoc.o -static
nailor@macbuntu:*rgo/src/tictoc-demo$ ./tictoc-demo
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0]
goroutine 2 [syscall]:
goroutine 1 [runnable]:
nailor@macbuntu:*rgo/src/tictoc-demo2$
ここで何が間違っていますか?