go基础语法与特性

112 阅读2分钟
  1. 主要特性

    • 静态类型:Go是一门静态类型的编程语言,需要在编译时指定变量的类型,并且类型检查是在编译阶段完成的。
    • 垃圾回收:Go具有自动垃圾回收机制,可以自动管理内存,减少程序员的负担。
    • 并发支持:Go原生支持并发编程,通过goroutine和channel实现轻量级的并发处理,提高程序的执行效率。
    • 内置工具:Go语言内置了丰富的工具集,例如包管理工具go mod、测试工具go test等,使开发、测试和部署更加便捷。
    • 强类型转换:Go语言中的强类型转换需要显式地进行类型转换,以确保类型的安全性。
  2. 基本语法

    • 包声明:每个Go文件都属于一个包,使用package关键字声明所属的包。
    • 导入其他包:使用import关键字导入其他包,可以同时导入多个包。
    • 函数:使用func关键字定义函数,可以有多个参数和返回值。
    • 变量声明:使用var关键字声明变量,可以显式指定类型,也可以使用类型推导。
    • 条件语句:使用if-else语句进行条件判断,还可以使用switch语句实现多条件判断。
    • 循环语句:使用for循环语句进行循环操作,可以通过breakcontinue控制循环流程。
    • 数组和切片:使用var arr [size]type声明数组,使用var slice []type声明切片,切片可变长。
    • 结构体:使用type关键字定义结构体,可以包含多个字段,类似于面向对象中的class。
    • 方法:通过为结构体定义方法,实现与结构体相关的行为,方法是特殊的函数,与结构体关联。
    • 接口:使用interface关键字定义接口,定义了一组方法的集合,实现接口的类型可以调用接口方法。
    • 错误处理:Go使用错误值来处理异常情况,经常与if语句和defer语句结合使用,提高代码的健壮性。

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())
}

}