编程语言比较:C 和 Go

Golang学习笔记(五):Go语言与C语言的区别 Golang学习笔记(五):Go语言与C语言的区别1 概述2 Go语言与C语言的区别2.1 行尾分号 1 概述 上一章节《Golang学习笔记(四):Go原始设计思想及核心特性》提到过,Go语言是“以C语言为原型,修补部分明显的缺陷,去掉垃圾功能,添加一些缺失的功能”而设计的。本章节就总结一下Go语言与C语言的区别。 本文主要参考:http://hyperpolyglot.org/c 以及 htt... 阅读详情

使用一个简单的计数程序比较古老的 C 语言和现代的 Go 语言。

Go 是一种现代编程语言,它很大程度上源自于 C 编程语言。因此,对于写 C 程序的程序员来说,Go 应该会感觉很熟悉。Go 让编写新程序变得容易🔗 opensource.com,同时让 C 程序员感觉熟悉,但避免了 C 编程语言的许多常见陷阱。

本文比较了一个简单的 C 和 Go 程序,该程序将数字从一相加到十。由于这个程序只使用了小的数值,所以结果不会变得太大,因此只使用了普通的整数变量。像这样的循环在编程中非常常见,所以这个简单的程序很容易比较 C 和 Go。

如何在 C 中执行循环

C 语言中最基本的循环是 for 循环,它允许你对一组值进行迭代。for 循环的基本语法是:

  1. for (起始条件 ; 结束条件 ; 每次迭代后执行的操作) { 循环内要执行的内容 ; }

你可以编写一个 for 循环,以打印从 1 到 10 的数字,将起始条件设置为 count = 1,将结束条件设置为 count <= 10。这样就以 count 变量等于 1 时开始循环。结束条件意味着只要 count 变量小于或等于 10 ,循环就会继续。

每次迭代之后,你使用 count = count + 1 将 count 变量的值增加 1。在循环内部,你可以使用 printf 打印 count 变量的值:

  1. for (count = 1; count <= 10; count = count + 1) {

  2. printf("%d\n", count);

  3. }

C 程序中常见的惯例是 ++,它表示 “将某个值加一”。如果你写 count++,那就相当于 count = count + 1。大多数 C 程序员会使用 count++ 来编写 for 循环中每次迭代后要执行的操作,像这样:

  1. for (count = 1; count <= 10; count++) {

  2. printf("%d\n", count);

  3. }

这是一个示例程序,将从 1 到 10 的数字相加,然后打印结果。使用 for 循环对数字进行迭代,但不要打印数字,而是将数字添加到 sum 变量中:

  1. #include <stdio.h>

  2. int main() {

  3. int sum;

  4. int count;

  5. puts("adding 1 to 10 ..");

  6. sum = 0;

  7. for (count = 1; count <= 10; count++) {

  8. sum = sum + count;

  9. }

这个程序使用了两个不同的 C 函数来向用户打印结果。puts 函数打印引号中的字符串。如果你需要打印纯文本,使用 puts 是个不错的选择。

printf 函数🔗 www.redhat.com 使用特殊字符在格式字符串中打印格式化的输出。printf 函数可以打印许多不同种类的值。关键字 %d 打印十进制(整数)值。

如果你编译并运行这个程序,你会看到这个输出:

  1. adding 1 to 10 ..

  2. The sum is 55

如何在 Go 中执行循环

Go 提供了与 C 中非常相似的 for 循环。C 程序中的 for 循环可以直接转换为 Go 的 for 循环,并具有相似的表示形式:

  1. for count = 1; count <= 10; count++ {

  2. fmt.Printf("%d\n", count)

  3. }

使用这个循环,你可以直接转换为 Go 的示例程序:

  1. package main

  2. import "fmt"

  3. func main() {

  4. var sum, count int

  5. fmt.Println("adding 1 to 10 ..")

  6. for count = 1; count <= 10; count++ {

  7. sum = sum + count

  8. }

  9. fmt.Printf("The sum is %d\n", sum)

  10. }

虽然上述方式在 Go 中是正确的,但它并不是最常用的 Go 写法。采用惯例是“使用与本地语言为人所知的表达方式”。任何语言的目标都是高效的沟通,编程语言也不例外。在不同的编程语言之间进行转换时,重要的是意识到尽管物似而意不同,一种编程语言中的典型写法在另一种编程语言中可能不完全相同。

为使用更符合惯例的 Go,你可以进行几个小修改:

◈ 通过使用 += 操作符来将 sum = sum + count 更简洁地表达为 sum += count。

◈ 通过使用 分配并推断类型运算符🔗 go.dev 来表达 count := 1 而不是 var count int 跟着 count = 1。:= 语法同时定义并初始化 count 变量。

◈ 将 count 的声明移到 for 循环的头中。这减少了一些认知负担,也通过减少程序员在任何时候都必须心里记着的变量数目来提高可读性。这个更改还通过在最接近其使用的地方和最小的范围中声明变量来增加安全性,从而减少了在代码不断演进的过程中对变量进行意外操作的可能性。

上述改动的组合将产生以下代码:

  1. package main

  2. import "fmt"

  3. func main() {

  4. fmt.Println("adding 1 to 10 ..")

  5. var sum int

  6. for count := 1; count <= 10; count++ {

  7. sum += count

  8. }

  9. fmt.Printf("The sum is %d\n", sum)

  10. }

你可以使用这个 Go.dev 的 链接🔗 go.dev 在 Go 试验场中尝试这个示例程序。

C 和 Go 相似但不同

通过在两种编程语言中编写相同的程序,你可以看到 C 和 Go 这两种语言虽然相似但仍然不同。将从 C 转换到 Go 时需要注意以下几点:

◈ 在 C 中,每个程序指令都必须以分号结尾。这告诉编译器一个语句在哪里结束,下一个在哪里开始。在 Go 中,分号是有效的,但几乎总是可以推断出来。

◈ 虽然大多数现代 C 编译器会为你将变量初始化为零值,但 C 语言规范指出,变量得到的是内存中的任意值。Go 值总是初始化为其零值。这有助于使 Go 成为一种更具内存安全的语言。这种差异在使用指针时变得更加有趣。

◈ 注意 Go 程序包对导入标识符的使用方式。例如,fmt 是一个实现格式化输入和输出的函数,类似于 C 中的 stdio.h 中的 printf 和 scanf。fmt 程序包在 pkg.go.dev/fmt🔗 pkg.go.dev 中有文档描述。

◈ 在 Go 中,main 函数总是以退出代码 0 返回。如果你希望返回其他值,你必须调用 os.Exit(n),其中 n 通常为 1 以表示错误。这可以从任何地方调用,不仅仅是 main 函数,来终止程序。你可以在 C 中使用在 stdlib.h 中定义的 exit(n) 函数来实现相同的效果。

Golang CGO 入门指南:轻松实现 Go 与 C 的无缝交互 在软件开发领域,不同的编程语言具有各自独特的优势。C语言以其高效的性能和对底层硬件的直接控制能力,在系统编程、嵌入式开发等领域有着广泛的应用。而Go语言则凭借其简洁的语法、强大的并发处理能力和高效的编译速度,在网络编程、云计算等领域备受青睐。CGO的出现,为开发者提供了一种在Go代码中调用C语言代码的机制,使得开发者可以充分利用两种语言的优势,实现更高效、更强大的软件系统。本指南的范围涵盖了CGO的基本概念、核心原理、具体操作步骤、项目实战、实际应用场景等方面,旨在帮助开发者快速掌握CGO的使用方法,实现G 阅读详情

相关推荐

【云原生 37】Docker快速部署编程语言Golang_docker go运行环境

🏅云计算领域优质创作者🏅。

2401_89317520的博客 1373

Go语言与C语言相互调用

现代的各种高级的编程语言很多都是在C语言之上构建的,基本上也都能够调用C语言,并且这个在某些情况下也是有这个需求和存在的意义的。Go语言对这方面支持的挺不错,不光可以调用C语言,还能给C语言调用。这篇文章将对相关的内容做个说明。

Naisu的各种笔记 6182

Go 与 C++ 的对比和比较

来源: 恒生LIGHT云社区 ETHAN ...

weixin_44433834的博客 3320

简单对比一下 C 与 Go 两种语言

使用一个简单的计数程序将古老的 C 语言与现代 Go 进行比较。Go 是一种现代编程语言,追溯其历史大部分源自编程语言 C。所以,任何熟悉 C 语言的开发者都可能会觉得 Go 很熟悉。C 程序员使用 Go 编写新程序变得容易,同时避免了 C 编程语言的许多常见缺陷。下面通过实现一个简单的加法逻辑,来比较 C 和 GO 的区别。该程序将数字从一加到十,计算过程和结果数值都比较小,所以代码仅使用普通整数变量。像这样的循环逻辑在编程中很常见,所以对比效果会显而易见。

下载完,不懂运行可以私聊,看到会回 973

Go语言和C++语言比较

Go语言和C++语言比较

匠心码农 2455

C语言与Go语言有什么区别?

源文件对比 C语言源文件 文件扩展名 源类型 .h 头文件,存放代码声明 .c C语言源文件,存放代码实现 Go语言源文件 文件扩展名 源类型 .go Go语言源文件,存放代码实现 代码管理对比 C语言中通过文件来管理代码 想使用某一个函数时,只需要include导入对应的.h文件即可 Go语言中通过包来管理代码 Go语言没有.h文件的概念, 在Go中想使用某一个函数时, 只需要import导入对应的包即可 C语言中函数、变量公私有管理

李南江 6418

Go 与 C 语言的互操作

这里写目录标题1. Go 与 C 语言的互操作1.1. Go 调用 C 代码的原理1.2. 在 Go 中使用 C 语言的类型1.2.1. 原生类型1.2.1.1. 数值类型1.2.1.2. 指针类型1.2.1.3. 字符串类型1.2.1.4. 数组类型1.2.1.5. 自定义类型1.2.1.5.1. 枚举(enum)1.2.1.5.2. 结构体(struct)1.2.1.5.3. 联合体(union)1.2.1.5.4. typedef1.3. Go 中访问 C 的变量和函数1.4. C 中使用 Go 函数

云满笔记 1967

在Termux上安装Kali Linux 完整系统

介绍如何在Termux上安装Kali Linux 完整系统

蓑雨一生的博客 2万+

GO开篇:手握Java走进Golang的世界

Go简介、Go和Java的对比

健身变秃,coding变强 1万+

BambuStudio学习笔记:OpenCSG - 实时构造实体几何(CSG)渲染的 OpenGL 方案

**OpenCSG** 是一个基于 **OpenGL** 的 **构造实体几何(CSG)** 实时渲染库,通过 **深度剥离算法** 实现布尔运算(并集、交集、差集)的可视化。其核心目标是简化复杂几何体的交互式建模,适用于 CAD 原型设计、3D 打印预览、教育工具等场景。

zzzkk2009的专栏 929

基于cat12和SPM12进行VBM&SBM数据分析笔记1——数据预处理

基于cat12数据分析基础教程笔记 今年是小编步入研究生生活的第一年,研究方向待定,但主要以磁共振成像为主,以后会不断地总结这方面的知识,涉及MRI扫描,数据分析基础方法理论,软件操作教程,文献阅读笔记总结等等,用来记录我的研究生三年学习过程。编写尽量简洁明了,通俗易懂,本就是小白,也能体会小白的痛。不过这也要谢谢一个人手动@小白(网名),是他教我要把自己所学的写下来,讲出来才能真正的做到输入和输出,查漏补缺。而cat12软件操作是我面临的第一个数据分析的训练,写的可能也不会非常到位,还望各位专业人士指出改

Sophia2023的博客 4万+

[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及

作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,驾驭~ 这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时

杨秀璋的专栏 12万+

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

C++、Rust和Go的性能比较

本文对C++、Rust和Go三种编程语言编写的gunzip程序进行了性能比较,通过基准测试试图尽可能公平的比较它们的性能。原文:本文将通过一些基准测试,比较 C++ 和 Rust 以及 Go 编写的相同程序的性能。我们将尽最大努力将语言差异以外的噪音因素隔离开来,不过,与任何基准测试一样,需要慎重对待测试结果,因为没有任何一种基准测试能真正比较两种不同语言的性能。

xuxian的博客 1196

基于Matlab的深度学习OFDM系统信号检测

在接收端,我们首先去除循环前缀,然后对接收到的信号进行FFT变换和QAM解调。在通信系统中,正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)是一种常用的调制技术,它可以将高速数据流分成若干个低速子载波进行传输,提高了信道利用率和抗干扰性能。接下来,我们使用训练好的神经网络对QAM调制后的数据进行检测,得到估计的FFT变换结果。深度学习方法可以通过大量的训练数据来学习信号的特征,并具有一定的适应能力,在某些情况下可能能够获得更好的检测性能。

2301_79325657的博客 296

YOLO26涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLO26做红外小目标检测有效涨点

本文提出一种基于APCM模块改进的YOLO26网络模型,通过像素级局部-全局协同建模动态增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,在特征提取阶段有效提升目标区域特征表达质量,尤其适用于低对比度和复杂场景下的目标检测。实验表明,该方法能显著提高小目标检测精度和模型鲁棒性,同时保持较低计算开销。模块通过局部特征分支和全局特征分支的协同融合,实现了对红外小目标的有效增强,在NUAA-SIRST和IRSTD-1K数据集上性能优于现有方法。文章还提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 190

Go(Golang)编程语言

(又称)是谷歌开发的一种静态强类型、编译型、,并的编程语言。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac平台上进行了实现,后来追加了Windows系统下的实现。Go 语言语法与相近,但功能上有:内存安全,(垃圾回收),及 CSP-style。

m0_72572822的博客 4967

快速入门必看!RT-DETR手把手训练自己的数据集去跑实验,基于 ultralytics 仓库源码改进,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。

本文介绍了使用Ultralytics框架训练RT-DETR模型的全流程。首先需要创建Python 3.10虚拟环境,安装指定版本的PyTorch和相关依赖包。然后准备数据集,修改配置文件,并详细介绍训练、验证和推理三个核心步骤的代码实现。训练阶段使用RTDETR类加载模型配置,设置训练参数;验证阶段评估模型性能;推理阶段可对图片、视频等进行预测。文中还提供了清华大学镜像源加速下载,以及详细的参数配置说明,帮助用户快速搭建RT-DETR目标检测模型。

Ai缝合怪、助力小伙伴高效发论文 5564

Golang 与 Java:编程语言比较及如何选择

Java 最初的目的被誉为“一次编写,随处运行”的语言,可以创建小型、可靠、可移植、分布式和实时的应用程序,以满足几乎任何目的。时至今日,Golang(也称为“Go”)已被 Google 和全球各地的公司广泛使用,这些公司依赖开源技术来创建功能强大的后端应用程序,这些应用程序几乎可以完成任何事情。因此,如果您希望构建高度可扩展、性能良好的后端应用程序,Golang 就是您想要的语言。Java 是可移植前端应用程序的出色选择,而 Golang 则是高度可扩展的后端应用程序的佼佼者。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1852

利用R批量计算相关系数

批量求相关系数

weixin_52073820的博客 1458

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

比较编程语言C和Go

使用一个简单的计数程序来比较古老的C语言和现代的Go语言。本文比较了一个简单的C语言和Go语言程序,用于将从1到10的数字相加。像这样的循环在编程中非常常见,因此这个简单的程序很容易比较C语言和Go语言。在不同编程语言之间进行转换时,重要的是要认识到,尽管外观上相似,但一个编程语言中的典型写法在另一个编程语言中可能并非完全相同。通过在两种编程语言中编写相同的程序,可以看出C语言和Go语言的相似之处,但也存在一些不同之处。在Go语言中,分号是有效的,但几乎总是可以推断出来。函数中,用于终止程序。

215

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Golang和Java的对决:从设计理念到工具链的全面比较

Golang和Java在设计、语法、并发和生态系统上存在差异。Golang旨在提供简单高效的并发语言,适用于高性能网络服务,强调代码简洁和运行效率;Java则提供跨平台的面向对象语言,适用于企业级应用和大型分布式系统,强调可移植性、可扩展性和安全性

专注于全栈开发领域 2654

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Go与其他编程语言的比较

Go(又称Golang)是一种由Google开发的静态类型编程语言,以其高效性能、简洁语法和原生并发支持著称。以下我将从多个关键方面,逐步比较Go与其他主流编程语言(如Python、Java、C++和JavaScript),确保比较客观、真实可靠。每个方面我会列出Go的优势和劣势,并辅以简短示例说明差异。总之,Go在性能和并发上优势明显,语法简洁,适合现代云应用;但在生态成熟度和特定领域(如AI)不如Python或Java。选择语言应基于项目需求:Go用于高效后端服务,其他语言用于其专长领域。

wrnqi1的专栏 662

golang go语言_Go(Golang)编程语言

golang go语言Go (or golang) is a programming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically-typed language in the tradition of Algol and...

cumian8165的博客 1072
上一篇: 解决幂等问题,只需要记住这个口诀!
下一篇: Spring中毒太深,离开Spring居然连最基本的接口都不会写了
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值