让我们比较一下c和go: hello_world.c:

#include<stdio.h>
int main(){
    printf("Hello world!");
}

hello_world.Go:

package main
import "fmt"
func main(){
    fmt.Printf("Hello world!")
}

编译这两个文件:

$gcc Hello_world.c -o Hello_c 
$8g Hello_world.go -o Hello_go.8
$8l Hello_go.8 -o Hello_go

而且...那是什么?

$ls -ls
... 5,4K 2010-10-05 11:09 Hello_c
... 991K 2010-10-05 11:17 Hello_go

大约1Mb的Hello World.你在开我的jest吗? 我做错了什么?

(strip Hello_go -> 893K only)

推荐答案

注意:此答案已过时

请注意,此答案已过时.请参考其他得票率较高的答案.我想删除这篇帖子,但接受的答案不能删除.


文件变大是个问题吗?我不知道Go,但我假设它静态地链接了一些运行库,而C程序不是这样.但一旦你的程序变大,这可能就没什么好担心的了.

here所述,默认情况下静态链接Go运行时.该页面还告诉您如何设置动态链接.

Go相关问答推荐

进入缓冲通道同步

迭代项列表时如何超时并发调用

Google OAuth2没有刷新令牌

Go Net/http路由

更改位置级别和时间戳零点Golang

Wamtime Memory中的‘Offset’是什么?Read?

我可以在Golang中的另一个类型参数的基础上约束一个类型的参数吗?

格式化 Azure SDK 的 golang 时间

是否需要手动调用rand.Seed?

如何使用 GolangCI 删除未使用的导入

Golang 中的泛型类型转换

使用 os/exec 和在命令行执行之间的结果莫名其妙地不同

在 Go 中公开公共 JWK

获取切片元素的地址是否意味着 Go 中元素的副本?

使用innerxml在 Go 中编码 XML 是否仅适用于某些类型?

如何将文件上传到 Google Drive,并与使用服务帐户和 Golang 的任何人共享

github.com/rs/zerolog 字段的延迟判断

使用 LoadLibraryA(path_to_dll) 加载 DLL 会将文件描述符 0、1 和 2 的继承句柄标志 (HANDLE_FLAG_INHERIT) 从 1 更改为 0

gob 解码器仅返回数组中的第一个元素

如何从应用程序调用谷歌云身份 API