Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题

60 阅读3分钟

写在前面的话

学习编程语言,就像学习一门新的交流工具,而每种语言都有它的独特魅力和应用场景。我之前一直在学习Java,通过这次青训营才开始学习Go语言。通过这次学习我归纳出两者之间的一些差异,主要包括以下几个方面:

  • 语法简单:与 Java 相比,Go 的语法更加简洁,去除了许多复杂的特性(如继承、多重实现等),代码更易读。

  • 高效并发:Go 原生支持并发编程,通过 goroutinechannel 实现的并发模式,比 Java 的线程更轻量、更直观。

  • 性能出色:与 Java 运行在 JVM 上不同,Go 直接编译为机器码,执行效率更高。

  • 生态广泛:Go 在云计算、微服务、网络编程等领域非常流行。

1. 什么是 Go 语言?

  • Go 语言(Golang) 是 Google 开发的一种开源编程语言。
  • 设计目标:简单、可靠、高效。
  • 适用于高性能应用开发,特别是在服务器编程、并发处理和云计算领域。

2. 安装和配置

安装 Go

  1. 前往 Go 官网 下载适合你的操作系统的版本。
  2. 安装后,配置环境变量(安装程序通常自动完成)。

检查安装

在终端输入以下命令,检查 Go 是否安装成功:

go versio

如果返回 Go 的版本信息,说明安装成功。

3. 第一个 Go 程序

示例:Hello, World

创建一个名为 main.go 的文件,并写入以下代码:

    package main
    import "fmt"

    func main() {
        fmt.Println("Hello, World!")
    }
代码解析
  • package main:定义程序的包名,main 表示这是一个可执行程序。
  • import "fmt":导入标准库 fmt,用于格式化输入和输出。
  • func main():定义主函数,程序从这里开始执行。
  • fmt.Println():打印输出,并换行。

4. 基础语法

变量

Go 是强类型语言,变量在使用前需要声明。

声明变量的方式
var name string = "GoLang"
var age int = 10
var isLearning bool = true
简短声明
name := "GoLang" // Go 会自动推导类型
age := 10
isLearning := true

数据类型

  1. 基本类型

    • 数字:int, float64
    • 字符串:string
    • 布尔值:bool
  2. 复合类型

    • 数组:[5]int
    • 切片(动态数组):[]int
    • 字典:map[string]int

条件语句

if age > 18 {
    fmt.Println("Adult")
} else {
    fmt.Println("Minor")
}
简短条件
if age := 20; age > 18 {
fmt.Println("Adult")

}

循环

Go 中只有一种循环结构:for

基础用法
for i := 0; i < 5; i++ {
    fmt.Println(i)
}
遍历数组或切片
nums := []int{1, 2, 3, 4, 5}
for index, value := range nums {
    fmt.Printf("Index: %d, Value: %d\n", index, value)
}

5. 常用特性

函数

Go 中函数是基本的代码块。

函数定义
func add(x int, y int) int {
    return x + y
}
多返回值
func divide(x, y int) (int, int) {
    return x / y, x % y
}
匿名函数
sum := func(a, b int) int {
    return a + b
}
fmt.Println(sum(3, 5))

数组与切片

数组
var arr [3]int = [3]int{1, 2, 3}
fmt.Println(arr)
切片
nums := []int{1, 2, 3}
nums = append(nums, 4) // 动态添加元素
fmt.Println(nums) // 输出: [1, 2, 3, 4]
字典

Go 中的字典是键值对的集合,用 map 表示:

scores := map[string]int{
    "Alice": 90,
    "Bob": 85,
}
fmt.Println(scores["Alice"]) // 输出: 90
结构体

结构体是用户定义的复合数据类型:

type Person struct {
                    Name string
                    Age  int
                }
    p := Person{Name: "Alice", Age: 30}
    fmt.Println(p.Name) // 输出: Alice

并发

Go 的并发模型基于 goroutinechannel

启动 goroutine
go func() {
    fmt.Println("Hello from Goroutine!")
}()
使用 channel
ch := make(chan int)

go func() {
    ch <- 42
}()

val := <-ch
fmt.Println(val) // 输出: 42

6. Go 语言的优点

  1. 简单清晰:语法直观,没有复杂的概念。
  2. 内置并发:通过 goroutinechannel 简化并发编程。
  3. 高效:编译成机器码,性能接近 C/C++。
  4. 强大的标准库:提供丰富的工具和库。