區別:1、C語言原始檔的副檔名是“.h”和“.c”,Go語言原始檔的副檔名是“.go”。 2.C語言中透過檔案來管理程式碼,Go語言中透過套件來管理程式碼。 3.C語言中總共有32個關鍵字,Go語言中一共有25個關鍵字。

本教學操作環境:windows7系統、c99&&GO 1.18版本、Dell G3電腦。
來源檔案比較
檔案副檔名 |
來源類型 |
.h |
#頭文件,存放程式碼聲明 |
.c |
C語言原始文件,存放程式碼實作 |
檔案副檔名 |
來源類型 |
#.go |
Go語言原始文件,存放程式碼實作 |
程式碼管理比較
- #C語言中透過檔案來管理程式碼
- 想使用某一個函數時,只需要include導入對應的.h檔即可
- #Go語言中透過套件來管理程式碼
- Go語言沒有.h文件的概念, 在Go中想使用某一個函數時, 只需要import導入對應的包即可
- #C語言中函數、變量公私有管理
- #透過extern和static實作是否公開函數和變數
- Go語言中函數、變數公私有管理
- 透過函數名稱首字母大小寫實作是否公開函數
- 透過變數名稱首字母大小寫實作是否公開變數
#關鍵字對比
# #C語言中一共有32個關鍵字8forcontinuetypedefstruct#enumunioncharshortintlong#floatdouble# #sizeofsignedunsigned
|
1 |
#2 |
3 |
#4 |
5 |
6 |
7 |
#if |
else |
switch |
|
|
##case |
default |
break |
return |
|
#goto |
##dowhile |
| | | |
| |
| | |
| | |
| | void |
|
| |
| |
##autoregister12default##typestruct
static |
extern |
volatile |
|
|
Go語言中總共有25個關鍵字 |
|
|
#345 |
678 |
|
if
|
#else
|
#switch
|
##switch |
case |
|
#break |
|
|
| |
return
|
goto |
|
fallthrough |
|
for |
|
|
continue |
|
|
|
var
|
const |
##map |
|
|
|
-
func
interface
- rangeimport
package
defer ##go
select
chan#資料型別比較C語言資料型別Go語言數據類型#C語言各資料型別佔用記憶體空間類型32位元編譯器64位元編譯器##charint
4#####4############ float######4######4############double######8#####8######## ####short######2######2############long######4#####8#### ########long long######8######8#############void*#####4##### #8############
##byte1 1uint8/unsigned char#rune4#4 int32/signed intint48根據機器位元數決定長度uintptr48依機器位數決定長度uint32/uint64float3244float#float64#1
#類型 |
32位元編譯器 |
#64位元編譯器 |
本質 |
int8/uint8 |
1 |
1 |
signed char/unsigned char |
int16/uint16 |
2 |
2 |
signed short/unsigned short |
#int32/uint32 |
4 |
4 |
signed int/unsigned int |
int64/ uint64 |
8 |
8 |
signed long long int/unsigned long long int |
| | | |
| | | |
| | | |
| | | |
| | | |
##8 |
8 |
|
|
|
|
|
|
##double |
|
true |
1 |
char類型的整數
1
char類型的整數-
- 與C語言一樣,Go語言也提供了Sizeof計算變數的記憶體空間
- 1.導入import "unsafe"套件
2.透過unsafe.Sizeof()計算變數記憶體空間
Go語言基本資料類型內部實作
golang官方網站下載go1.4版本原始碼
越老版本的程式碼越純粹,越適合新手學習- 隨著程式碼的更新迭代會逐步變得非常複雜, 所以這裡建議下載1.4版本
解壓縮後開啟路徑: go\src\runtime\runtime.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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;
typedef uint64 uintgo;
# else
typedef uint32 uintptr;
typedef int32 intptr;
typedef int32 intgo;
typedef uint32 uintgo;
# endif
#ifdef _64BITREG
typedef uint64 uintreg;
# else
typedef uint32 uintreg;
# endif
enum
{
true = 1,
false = 0,
};
|
登入後複製
install B 時刻:- Go本質就是用C語言寫的一門高階程式語言
所以江哥前面教你C語言就是為了今天能讓你看懂Go的實作程式碼,做到知其然知其所以然
#常數變數對比
C語言定義常數和變數格式-
1 2 | 数据类型 变量名称 = 值;
const 数据类型 常量名称 = 值;
|
登入後複製
Go語言定義常數和變數格式
除了以下標準格式外,Go語言還提供了好幾種簡單的語法糖
1 2 | var 变量名称 数据类型 = 值;
const 变量名称 数据类型 = 值;
|
登入後複製
註解對比
#和C語言一樣,Go語言也支援單行註解和多行註解, 並且所有註解的特性都和C語言一樣單行註解
// 被註解內容
多行註解- /* 被註解內容* /
在Go語言中,官方更推薦使用單行註解,而非多行註解(詳情可以直接查看Go官方原始碼)-
運算子比較
算數運算子和C語言幾乎一樣Go語言中、--運算子不支援前置錯誤寫法: a = i ; return i ;#運算子##實例相加A B- 相減A - B*相乘/
錯誤寫法: i; --i; |
|
Go語言中、--是語句,不是表達式,所以必須獨佔一行 |
|
|
|
|
|
|
|
|
|
| |
|
| | |
| | |
| ##A * B |
|
相除
%##求餘 #B % A關係算符和C語言一樣描述
實例###################==######檢查兩個值是否相等,如果相等回傳True 否則回傳False。 ######A == B############!=######檢查兩個值是否不相等,如果不相等回傳 True 否則回傳 False。 ######A != B############>#######檢查左邊值是否大於右邊值,如果是回傳 True 否則回傳 False。 ######A > B############=#######檢查左邊值是否大於等於右邊值,如果是回傳 True 否則回傳 False。 ######A >= B############
运算符 |
描述 |
实例 |
&& |
如果两边的操作数都是 True,则条件 True,否则为 False。 |
A && B |
|| |
如果两边的操作数有一个 True,则条件 True,否则为 False。 |
A || B |
! |
如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 |
!A |
运算符 |
描述 |
实例 |
& |
参与运算的两数各对应的二进位相与, 对应位只要都是1结果就为1 |
A & B |
| |
参与运算的两数各对应的二进位相或,对应位只要其中一个是1结果就为1 |
A | B |
^ |
参与运算的两数各对应的二进位相异或,对应位只要不同结果就是1 |
A ^ B |
|
左移运算符,左移n位就是乘以2的n次方 |
A |
>> |
右移运算符,右移n位就是除以2的n次方 |
B >> 2 |
&^ |
逻辑清零运算符, B对应位是1,A对应位清零,B对应位是0, A对应位保留原样 |
A &^ B |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int main(){
a1 := 6
b1 := 11
res1 := a1 &^ b1
fmt.Println( "res1 = " , res1)
a2 := 11
b2 := 13
res2 := a2 &^ b2
fmt.Println( "res2 = " , res2)
}
|
登入後複製
运算符 |
描述 |
实例 |
= |
将右边赋值给左边 |
C = A + B 将 A + B 表达式结果赋值给 C |
+= |
相加后再赋值 |
C += A 等于 C = C + A |
-= |
相减后再赋值 |
C -= A 等于 C = C - A |
*= |
相乘后再赋值 |
C *= A 等于 C = C * A |
/= |
相除后再赋值 |
C /= A 等于 C = C / A |
%= |
求余后再赋值 |
C %= A 等于 C = C % A |
|
左移赋值 |
C |
>>= |
右移赋值 |
C >>= 2 等于 C = C >> 2 |
&= |
位逻辑与赋值 |
C &= 2 等于 C = C & 2 |
^= |
位逻辑或赋值 |
C ^= 2 等于 C = C ^ 2 |
|= |
位逻辑异或赋值 |
C |= 2 等于 C = C | 2 |
&^= |
位逻辑清零赋值 |
C &^= 2 等于 C = C &^ 2 |
流程控制语句对比
- C语言流程控制中的if、switch、for在Go语言都可以使用
- C语言中的四大跳转语句return、break、continue、goto在Go语言都可以使用
- Go语言除了实现C语言中if、switch、for、return、break、continue、goto的基本功能以外,还对if、switch、for、break、continue进行了增强
- 例如: if 条件表达式前面可以添加初始化表达式
- 例如: break、continue可以指定标签
- 例如: switch语句可以当做if/elseif来使用
- ... ...
- 值得注意的是Go语言中没有while循环和dowhile循环, 因为它们能做的Go语言中的for循环都可以做
函数和方法对比
1 2 3 4 | 返回值类型 函数名称(形参列表) {
函数体相关语句;
return 返回值;
}
|
登入後複製
1 2 3 4 | func 函数名称(形参列表)(返回值列表) {
函数体相关语句;
return 返回值;
}
|
登入後複製
- C语言中没有方法的概念, 但是Go语言中有方法
- 对于初学者而言,可以简单的把方法理解为一种特殊的函数
1 2 3 4 | func (接收者 接受者类型)函数名称(形参列表)(返回值列表) {
函数体相关语句;
return 返回值;
}
|
登入後複製
编程思想对比
更多编程相关知识,请访问:编程视频!!
以上是c語言與go語言的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!