Go 语言基础:包、函数、语句和注释解析


Go 语言是一个开源的编程语言,强调简单、并发和高效。本文将详细介绍 Go 语言的基础概念,包括包、函数、语句和注释的使用。

包(Package)

包的概念

在 Go 语言中,包是组织代码的基本单位。每个 Go 源文件都属于一个包。包可以包含函数、变量、类型等,通过包的划分,可以实现代码的模块化和复用。

包的声明

每个 Go 源文件必须以 package 声明开头,指定该文件所属的包名。

package main // 表示该文件属于 main 包

import "fmt" // 引入 fmt 包,用于格式化输出

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

导入包

使用 import 关键字导入其他包,多个包可以用小括号括起来。

import (
    "fmt"
    "math"
)

导出标识符

包中的标识符(如变量、常量、类型、函数等)如果希望被其他包访问,必须以大写字母开头。这称为导出(exported)。

package mathutil

// Exported function
func Add(a, b int) int {
    return a + b
}

// Unexported function
func subtract(a, b int) int {
    return a - b
}

函数(Function)

函数的定义

函数是 Go 语言中的基本代码结构,通过 func 关键字定义。函数可以有参数和返回值。

package main

import "fmt"

// 无参数,无返回值函数
func sayHello() {
    fmt.Println("Hello, World!")
}

// 有参数,有返回值函数
func add(a int, b int) int {
    return a + b
}

func main() {
    sayHello()
    sum := add(2, 3)
    fmt.Println("Sum:", sum)
}

多个返回值

Go 语言的函数可以返回多个值。

func swap(a, b int) (int, int) {
    return b, a
}

func main() {
    x, y := swap(1, 2)
    fmt.Println(x, y) // 输出:2 1
}

命名返回值

函数的返回值可以被命名,并在函数体内直接使用。

func divide(a, b float64) (quotient float64, err error) {
    if b == 0 {
        err = fmt.Errorf("division by zero")
        return
    }
    quotient = a / b
    return
}

语句(Statements)

变量声明

变量通过 var 关键字声明,或者使用简短声明方式 :=

var name string = "Alice"
age := 30

条件语句

Go 语言支持 if-else 语句,用于条件判断。

if age > 18 {
    fmt.Println("Adult")
} else {
    fmt.Println("Minor")
}

循环语句

Go 语言只有 for 一种循环语句,支持三种形式:传统形式、条件形式和无限循环形式。

// 传统形式
for i := 0; i < 10; i++ {
    fmt.Println(i)
}

// 条件形式
i := 0
for i < 10 {
    fmt.Println(i)
    i++
}

// 无限循环
for {
    fmt.Println("Hello")
}

switch 语句

switch 语句用于多条件判断,支持省略 break

switch day := 3; day {
case 1:
    fmt.Println("Monday")
case 2:
    fmt.Println("Tuesday")
default:
    fmt.Println("Other day")
}

注释(Comments)

单行注释

// 开头,适用于简短的说明。

// 这是一个单行注释
var name = "Alice" // 声明变量 name

多行注释

/* 开头,以 */ 结尾,适用于较长的说明。

/*
这是一个多行注释
可以跨越多行
*/
var age = 30

文档注释

用于生成文档的注释,通常放在包、函数、类型前面。

// Package mathutil 提供基本的数学运算功能
package mathutil

// Add 返回两个整数的和
func Add(a, b int) int {
    return a + b
}

示例:综合示例

// Package main 是程序的入口包
package main

import (
    "fmt"
    "errors"
)

// User 表示一个用户
type User struct {
    Name string
    Age  int
}

// NewUser 创建一个新的 User 实例
func NewUser(name string, age int) (*User, error) {
    if age < 0 {
        return nil, errors.New("age cannot be negative")
    }
    return &User{Name: name, Age: age}, nil
}

func main() {
    // 创建用户
    user, err := NewUser("Alice", 30)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    // 打印用户信息
    fmt.Printf("User: %s, Age: %d\n", user.Name, user.Age)

    // 交换两个整数
    x, y := 1, 2
    x, y = y, x
    fmt.Printf("Swapped: x=%d, y=%d\n", x, y)
}

总结

本文介绍了 Go 语言的基础概念,包括包的使用和导入、函数的定义和调用、常见的语句如变量声明、条件语句、循环语句和 switch 语句,以及注释的使用和最佳实践。这些基础知识是学习 Go 语言的起点,掌握这些概念后,可以继续深入学习 Go 的并发编程、接口和反射等高级特性。


原文链接:codingdict.net