langShift

语法对比基础

本模块探讨 JavaScript 和 Go 之间的基本语法差异,涵盖变量声明、控制流、函数、数据类型和其他核心语言结构。

变量声明和类型系统

JavaScript 使用动态类型,变量类型在运行时确定,而 Go 使用静态类型,具有类型推断能力。

正在加载...

控制流语句对比

两种语言都支持类似的控制流结构,但语法和约定不同。

If/Else 语句

正在加载...

For 循环

正在加载...

函数定义和调用

Go 函数需要显式的返回类型,与 JavaScript 函数的语法不同。

正在加载...

数据类型和结构

Go 有丰富的内置类型和结构,与 JavaScript 有显著差异。

正在加载...

作用域和生命周期

两种语言都有块作用域,但 Go 的作用域规则更显式和一致。

正在加载...

错误处理

JavaScript 使用 try-catch 进行异常处理,而 Go 使用显式的错误返回值。

正在加载...

基本数据类型对比

Go 有全面的内置类型,每种类型都有特定用途。

JavaScript 类型Go 等价类型说明
numberint, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128Go 有特定的整数大小
stringstring默认 UTF-8 编码
booleanbool相同概念
nullnil用于指针、接口、切片、map、通道
undefined无直接等价通常用 nil 或零值表示
objectstruct, map[string]interface{}结构体是分组数据的主要方式
array[n]T (数组), []T (切片)数组固定大小,切片动态
symbol无直接等价Go 类型系统中不需要
bigintint64, uint64, 或外部包用于任意精度

运算符和表达式

大多数运算符相似,但 Go 在语法和行为上有一些差异。

正在加载...

练习题:

  1. 解释 Go 中 arrayslice 类型的区别,以及何时使用每种类型。
  2. 编写一个 Go 函数,接受整数切片并返回总和和平均值,演示多个返回值。
  3. Go 的错误处理与 JavaScript 的异常处理有何不同?提供两种方法的示例。
  4. 创建一个 Go 结构体来表示 Person,包含姓名、年龄和邮箱字段,然后编写一个函数来验证人员数据。

项目想法:

  • 在 Go 中构建一个简单的计算器程序,可以执行基本算术运算,演示函数使用、错误处理和用户输入处理。与 JavaScript 等效版本进行比较。

下一步:

  • 学习 Go 的包系统和模块管理
  • 理解 Go 的类型系统和接口
  • 探索 Go 强大的并发特性:goroutines 和 channels