-
主要特性
- 静态类型:Go是一门静态类型的编程语言,需要在编译时指定变量的类型,并且类型检查是在编译阶段完成的。
- 垃圾回收:Go具有自动垃圾回收机制,可以自动管理内存,减少程序员的负担。
- 并发支持:Go原生支持并发编程,通过goroutine和channel实现轻量级的并发处理,提高程序的执行效率。
- 内置工具:Go语言内置了丰富的工具集,例如包管理工具go mod、测试工具go test等,使开发、测试和部署更加便捷。
- 强类型转换:Go语言中的强类型转换需要显式地进行类型转换,以确保类型的安全性。
-
基本语法
- 包声明:每个Go文件都属于一个包,使用
package关键字声明所属的包。 - 导入其他包:使用
import关键字导入其他包,可以同时导入多个包。 - 函数:使用
func关键字定义函数,可以有多个参数和返回值。 - 变量声明:使用
var关键字声明变量,可以显式指定类型,也可以使用类型推导。 - 条件语句:使用
if-else语句进行条件判断,还可以使用switch语句实现多条件判断。 - 循环语句:使用
for循环语句进行循环操作,可以通过break和continue控制循环流程。 - 数组和切片:使用
var arr [size]type声明数组,使用var slice []type声明切片,切片可变长。 - 结构体:使用
type关键字定义结构体,可以包含多个字段,类似于面向对象中的class。 - 方法:通过为结构体定义方法,实现与结构体相关的行为,方法是特殊的函数,与结构体关联。
- 接口:使用
interface关键字定义接口,定义了一组方法的集合,实现接口的类型可以调用接口方法。 - 错误处理:Go使用错误值来处理异常情况,经常与
if语句和defer语句结合使用,提高代码的健壮性。
- 包声明:每个Go文件都属于一个包,使用
package main
import "fmt"
func main() { // 变量声明和赋值 var a int = 10 b := 20
// 条件语句
if a > b {
fmt.Println("a is greater than b")
} else {
fmt.Println("b is greater than a")
}
// 循环语句
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// 切片和循环
numbers := []int{1, 2, 3, 4, 5}
for _, num := range numbers {
fmt.Println(num)
}
// 结构体和方法
type Rectangle struct {
width int
height int
}
rectangle := Rectangle{width: 10, height: 5}
area := rectangle.calculateArea()
fmt.Println("Area:", area)
// 接口
type Shape interface {
calculateArea() int
}
shapes := []Shape{rectangle}
for _, shape := range shapes {
fmt.Println("Area:", shape.calculateArea())
}
}