多语言中的变量与函数定义:从语法差异到理解方式
Table of Contents
多语言中的变量与函数定义:从语法差异到理解方式
接触的编程语言越多,越会发现一个很现实的问题:概念看起来差不多,但落到具体语法时,每门语言都有自己的表达习惯。
这篇文章不追求把所有细节一次讲完,而是先抓两个最基础、也最常见的入口:变量定义和函数定义。对刚从一门语言切到另一门语言的人来说,这两个部分通常最容易混淆。
如果你经常在 C#、C++、Python、Go、JavaScript、Rust 之间切换,这类对照会比单独记语法更有帮助。
python/ dart 将类型分为不可变类型与可变类型,对应 C#/Java 中的值类型与引用类型
定义变量
let |
Rust, js | let num = 1; |
|---|---|---|
var or := |
go | var num = 1 or num := 1 |
| [类型] [变量名] = [变量值] | C C++ C# | int num = 1; |
| variable_name = variable_value | Python | num = 1 |
var 是 C# 的隐式类型推断
auto 是 C++ 自动类型推断
定义函数
func |
go | func add(x, y int) int { |
|---|---|---|
def |
Python | def add(x, y) -> int: |
function |
js | function add (x, y) {return x + y;} |
fn |
Rust | pub fn add(x: i32, y: i32) -> i32 { |
| [返回类型] 函数名 | C C++ C# | int add(int x, int y){ |
Python 的 def 来自 lisp,全称是 define function
js 的 function可以转换为箭头形式 let add = (x, y) => x + y
C++ 也可以将返回类型放到右边 auto add (int x, int y) -> int { C# 没有类似的写法
什么时候这种对照最有价值
这类内容最适合下面几种场景:
- 你在快速阅读陌生语言的代码,需要先建立基础语法直觉。
- 你在准备跨语言开发或面试,希望先把常见表达方式对齐。
- 你在使用 AI 辅助编程,但不想完全失去对生成代码的判断力。
总结
跨语言学习最有效的方式,不是死记硬背每一种语法,而是先看清楚这些语法背后的表达习惯。
变量定义关注的是“类型信息放在哪里”,函数定义关注的是“接口如何表达”。只要把这两个入口先理顺,再去看对象、集合、错误处理、并发等内容,理解成本会低很多。