区别:1、C语言源文件的扩展名是“.h”和“.c”,Go语言源文件的扩展名是“.go”。2、C语言中通过文件来管理代码,Go语言中通过包来管理代码。3、C语言中一共有32个关键字,Go语言中
区别:1、C语言源文件的扩展名是“.h”和“.c”,Go语言源文件的扩展名是“.go”。2、C语言中通过文件来管理代码,Go语言中通过包来管理代码。3、C语言中一共有32个关键字,Go语言中一共有25个关键字。
本教程操作环境:windows7系统、c99&&GO 1.11.2版本、Dell G3电脑。
源文件对比
- C语言源文件
- Go语言源文件
代码管理对比
- C语言中通过文件来管理代码
- 想使用某一个函数时,只需要include导入对应的.h文件即可
- Go语言中通过包来管理代码
- Go语言没有.h文件的概念, 在Go中想使用某一个函数时, 只需要import导入对应的包即可
- C语言中函数、变量公私有管理
- 通过extern和static实现是否公开函数和变量
- Go语言中函数、变量公私有管理
- 通过函数名称首字母大小写实现是否公开函数
- 通过变量名称首字母大小写实现是否公开变量
关键字对比
- C语言中一共有32个关键字
- Go语言中一共有25个关键字
数据类型对比
C语言数据类型
Go语言数据类型
- C语言各数据类型占用内存空间
- Go语言各数据类型占用内存空间
- 和C语言一样,Go语言也提供了Sizeof计算变量的内存空间
- 1.导入import "unsafe"包
- 2.通过unsafe.Sizeof()计算变量内存空间
- Go语言基本数据类型内部实现
- golang官方网站下载go1.4版本源代码
- 越老版本的代码越纯粹,越适合新手学习
- 随着代码的更新迭代会逐步变得非常复杂, 所以此处建议下载1.4版本
解压后打开路径:
go\src\runtime\runtime.h
- 得到如下实现代码
- golang官方网站下载go1.4版本源代码
// 第8行到35行 typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; typedef signed int int32; typedef unsigned int uint32; typedef signed long long int int64; typedef unsigned long long int uint64; typedef float float32; typedef double float64; #ifdef _64BIT typedef uint64 uintptr; typedef int64 intptr; typedef int64 intgo; // Go's int typedef uint64 uintgo; // Go's uint #else typedef uint32 uintptr; typedef int32 intptr; typedef int32 intgo; // Go's int typedef uint32 uintgo; // Go's uint #endif #ifdef _64BITREG typedef uint64 uintreg; #else typedef uint32 uintreg; #endif // 第153行到157行 enum { true = 1, false = 0, };
install B 时刻:
Go本质就是用C语言编写的一门高级编程语言
所以江哥前面教你C语言就是为了今天能让你看懂Go的实现代码,做到知其然知其所以然
常量变量对比
- C语言定义常量和变量格式
数据类型 变量名称 = 值; const 数据类型 常量名称 = 值;
- Go语言定义常量和变量格式
- 除了以下标准格式外,Go语言还提供了好几种简单的语法糖
var 变量名称 数据类型 = 值; const 变量名称 数据类型 = 值;
注释对比
- 和C语言一样,Go语言也支持单行注释和多行注释, 并且所有注释的特性都和C语言一样
- 单行注释
// 被注释内容
- 多行注释
/* 被注释内容*/
- 单行注释
- 在Go语言中,官方更加