Go 语言入门指南:基础语法 | 青训营

94 阅读4分钟

引言

Go语言是一门简洁、高效、并发的编程语言,由Google开发。自诞生以来,Go语言在软件开发领域迅速崭露头角,被广泛应用于网络服务、云计算、分布式系统等领域。本文将为您介绍Go语言的基础语法和常用特性,帮助您快速入门并开始使用Go语言进行开发。

1. Hello, World!

让我们从经典的"Hello, World!"程序开始。在Go语言中,编写Hello World非常简单:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

在上面的代码中,我们使用package main定义了一个包,import "fmt"引入了fmt包,它提供了格式化输入输出的功能。func main()是程序的入口函数,当我们运行程序时,将会从main函数开始执行。fmt.Println用于打印输出。

2. 变量和常量

Go语言支持声明变量和常量。变量的声明可以使用关键字var,常量使用关键字const

package main

import "fmt"

func main() {
    // 变量声明
    var age int = 25
    var name string = "Alice"
    
    // 常量声明
    const pi float64 = 3.1415926
    
    fmt.Printf("Name: %s, Age: %d\n", name, age)
    fmt.Printf("Pi: %f\n", pi)
}

变量声明:

  1. 使用关键字var来声明一个变量,语法为:var variableName dataType
  2. 变量名必须以字母或下划线开头,可以包含字母、数字和下划线,但不能使用Go的关键字。
  3. 可以一次性声明多个变量,例如:var x, y int
  4. 如果声明时未初始化变量,则变量会被赋予其数据类型的零值,比如:int类型的零值是0string类型的零值是空字符串""
  5. 可以使用短变量声明来创建并初始化变量,语法为:variableName := value

注意:

  1. 在Go中,变量声明后必须使用,否则会导致编译错误。如果想要声明一个变量但不使用它,可以使用下划线 _ 来代替变量名,表示该变量被丢弃,不会占用内存空间。
  2. 短变量重声明只能在局部代码块作用域里,只有在同一作用域才是重复声明,如果在不同作用域声明相同变量名,则是创建新的变量

3. 条件和循环

Go语言的条件语句和循环与其他语言类似。例如,我们可以使用if-else语句进行条件判断,使用for循环进行迭代。

package main

import "fmt"

func main() {
    age := 18
    
    // if-else 条件判断
    if age >= 18 {
        fmt.Println("成年人")
    } else {
        fmt.Println("未成年人")
    }
    
    // for 循环
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

注意:else需要直接跟在if条件语句右括号之后,否则会报错

4. 数组和切片

Go语言支持数组和切片。数组是一个固定长度、具有相同类型元素的数据结构。在 Go 语言中,创建数组时,需要指定数组的大小,并且该大小在声明后无法改变。数组的大小是其类型的一部分,因此类型为 [size]dataType ,其中 size 表示数组大小, dataType 表示数组元素的数据类型。切片是一个可变长度的数组,不需要指定大小,可以动态增长和收缩。在声明切片时,不需要指定大小,只需要指定元素的类型。切片是对数组的引用,对切片的修改会影响到底层数组。当将一个切片赋值给另一个切片时,它们会引用相同的底层数组。

package main

import "fmt"

func main() {
    s := make([]string,3)
    s[0] = "a"
    s[1] = "b"
    s[2] = "c"
    fmt.Pringln("get:",s[2]) //c
    fmt.Pringln("len:",len[s]) //3
 
    s = append(s,"d")
    s = append(s,"e","f")
    fmt.Println(c) // [a b c d e f]
    
    fmt.Println(s[2:5]) // [c d e]
    fmt.Println(s[:5]) // [a b c d e]
    fmt.Println(s[2:]) // [c d e f]
    
    good := []string{"g","o","o","d"}
    fmt.Println(good) // [g o o d]
}

5. 函数

函数是Go语言的基本构建块,它们允许我们将代码封装为可重用的模块。

package main

import "fmt"

// 定义一个函数,计算两个整数之和
func add(a, b int) int {
    return a + b
}

func main() {
    num1 := 10
    num2 := 20
    
    result := add(num1, num2)
    fmt.Println("结果:", result)
}

Go语言的特性

  1. Go语言的关键特性之一是内置的并发支持,通过goroutine和channel,可以轻松实现高并发的程序。
  2. Go语言具有垃圾回收功能,可自动管理内存,减轻开发人员的负担。
  3. Go语言有丰富的标准库和第三方库,可支持多种领域的应用开发。
  4. Go语言的编译速度快,可以快速生成可执行文件,适合于大规模项目的开发。
  5. 由于其简洁和高效的设计,Go语言在开发中可以提高开发效率,并减少代码维护成本。

总的来说,Go语言是一门强大且适用于多种场景的编程语言,其简单易学的语法和丰富的特性使其成为越来越多开发者的首选语言。在使用Go语言进行开发时,充分发挥其并发性和高效性能,可以帮助开发者构建稳定、可靠且高性能的应用程序。