为什么这段代码会在 go 中生成非常大的可执行文件(大约 81M)?

我是 golang 的新手。我写了这样的代码:


package main


import (

    "fmt"

)


const (

    BIG_NUM = 10 * 1000 * 1000

)


type BigData [BIG_NUM]uint64


func (self BigData) String() string {

    return fmt.Sprintf("%d\n", self[0])

}


func (self *BigData) Clear() {

    *self = BigData{}

}


func main() {

    data := new(BigData)

    fmt.Println(data)

}

编译后,可执行文件在81M左右:


$ ls -l

-rwxr-xr-x  1 tchen  522017917  81533376 Dec 19 08:44 test

-rw-r--r--  1 tchen  522017917       290 Dec 19 08:44 test.go

当我删除 Clear() 函数时,可执行文件变为正常大小。那么为什么这个 Clear() 函数会生成这么大的可执行文件呢?它应该在运行时调用,而不是编译时调用,对吗?


鸿蒙传说
浏览 187回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go