目录
1、环境配置
2、基本语法
3、与python比较
一、环境配置
多语言配置环境,利用vscode同时配置java、python、go语言环境,流程可参考b站各类教程,主要为下载go,vscode软件,并在vscode中安装chinese语言、go、java、python、pyclane等插件。
主要问题goproxy路径配置,在系统变量中增加GOPROXY环境,值为https://goproxy.io,direct,实现go在github中工具的配置,主要的tools可以通过建立.go后缀文件输入helloworld代码一键安装需要的工具。
二、基本语法
-
包(Packages) : Go的代码组织以包为基础,一个包可以包含多个文件,同一个包的文件属于同一个命名空间。每个Go程序都必须包含一个
main包,其中的main函数是程序的入口点。 -
导入(Imports): 使用
import关键字导入其他包,类似于Python的import。goCopy code import "fmt" -
函数(Functions): 函数使用
func关键字定义,返回类型在函数名之后声明。goCopy code func add(a, b int) int { return a + b } -
变量(Variables): 使用
var关键字声明变量,类型在变量名之后声明。goCopy code var x int x = 10或者使用短变量声明:
goCopy code y := 20 -
常量(Constants) : 使用
const关键字定义常量。goCopy code const pi = 3.14159 -
条件语句(Conditional Statements) : Go支持
if、else if和else条件语句,用法与其他语言类似。goCopy code if x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is not greater than 10") } -
循环(Loops): Go只有
for循环,用法灵活。可以用它实现循环、迭代集合等。goCopy code for i := 0; i < 5; i++ { fmt.Println(i) } -
错误处理: Go鼓励显式的错误处理,通常返回值中包含一个
error类型。goCopy code result, err := someFunction() if err != nil { // 处理错误 }
三、与python比较
- 静态类型: Go是一种静态类型语言,这意味着在编写代码时必须显式声明变量的类型。与Python不同,Go在编译阶段就会检查类型错误,这有助于在早期捕获许多常见的错误,提高代码质量和可靠性。
- 编译型语言: Go是编译型语言,代码在运行之前需要先经过编译。这与Python作为解释型语言不同,需要在运行时逐行解释代码。编译型语言在执行时通常更快,但开发迭代速度可能较慢。
- 并发原生支持:Go在语言级别提供了强大的并发支持,使用goroutines和channels来实现。这种并发模型可以轻松地编写高效的并发代码,而在Python中,需要使用多线程、多进程或第三方库来实现类似的功能。
- 内存管理和指针:Go允许对内存进行更精细的控制,它具有指针和手动内存管理的能力。这与Python的自动内存管理机制截然不同,后者通过垃圾回收自动处理内存分配和释放。
- 简洁的语法和类型推断:Go的语法相对简洁,消除了许多冗余的符号。同时,Go也支持类型推断,使得变量声明时不需要显式指定类型,这在某种程度上减少了冗长的类型信息。
- 工具链和依赖管理:Go具有强大的工具链,例如
go build用于编译、go test用于测试、go run用于运行等。Go使用模块系统(go mod)来管理依赖,这与Python的依赖管理方式有所不同。 - 错误处理: Go鼓励使用显式的错误返回值来处理异常情况,这与Python的异常机制不同。这种方式可以使错误处理更加清晰和可控。
- 包和可见性: Go的包系统强制实施了包的可见性规则,只有以大写字母开头的标识符才能从外部包中访问。这有助于封装和模块化代码,但也可能增加一些限制。
- 文档和注释: Go对于文档和注释有着严格的要求,注释的格式甚至可以被工具自动生成文档。这与Python的注释和文档约定有所不同,但同样有助于代码的可维护性。