go学习之路【持续更新】

linux上go编译器下载:yum install go -y

1.go:hello.go

package main

import "fmt"
/* { 不能独立一行,只能跟随在函数等后面 */
func main(){	
    fmt.Println("hello,world")
}

运行:go run hello.go
编译:go build hello.go
编译体积:2M
去掉符号体积为1.4M:strip -s hello


2.c++: hello.cpp

#include <iostream>

int main()
{
std::cout << "hello,world" << std::endl;
return 0;
}

动态编译体积:8K

需要动态库如下:

[root@jn go]# ldd a.out
        linux-vdso.so.1 =>  (0x00007ffd87d78000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1f793b5000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f1f790b3000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1f78e9d000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f1f78acf000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1f796bf000)
[root@jn go]# 

静态编译体积:5.5M
去掉符号体积为1.3M:strip -s a.out

结论:
go语言使用静态编译,初衷是为了避免库依赖,相比C++静态编译,体积方面相差不多


3.在 Go 语言中,变量在声明但没有明确初始化时,会被赋予其对应类型的默认零值。Go 支持以下几种基本类型的默认零值:

  1. 数值类型(整数和浮点数):默认为 0。
  • intint8int16int32int64
  • uintuint8uint16uint32uint64uintptr
  • float32float64
  1. 布尔类型:默认为 false
  • bool
  1. 字符串类型:默认为空字符串 ""
  • string
  1. 字符类型:默认为 0(即空字符)。
  • byteuint8 的别名
  • runeint32 的别名,用于表示 Unicode 码点
  1. 复数类型:默认为 0。
  • complex64:由两个 float32 表示的复数
  • complex128:由两个 float64 表示的复数
  1. 指针类型:默认为 nil
    **int*float64*string

  2. 函数类型:默认为 nil

  • func
  1. 接口类型:默认为 nil
  • interface
  1. 切片类型:默认为 nil
  • []int[]string
  1. 映射类型:默认为 nil
  • map[string]int
  1. 通道类型:默认为 nil
  • chan int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值