Go 语言基础:包、函数、语句和注释解析
Go 语言是一个开源的编程语言,强调简单、并发和高效。本文将详细介绍 Go 语言的基础概念,包括包、函数、语句和注释的使用。
在 Go 语言中,包是组织代码的基本单位。每个 Go 源文件都属于一个包。包可以包含函数、变量、类型等,通过包的划分,可以实现代码的模块化和复用。
每个 Go 源文件必须以 package 声明开头,指定该文件所属的包名。
package
package main // 表示该文件属于 main 包 import "fmt" // 引入 fmt 包,用于格式化输出 func main() { fmt.Println("Hello, World!") }
使用 import 关键字导入其他包,多个包可以用小括号括起来。
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 }
函数是 Go 语言中的基本代码结构,通过 func 关键字定义。函数可以有参数和返回值。
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 }
变量通过 var 关键字声明,或者使用简短声明方式 :=。
var
:=
var name string = "Alice" age := 30
Go 语言支持 if-else 语句,用于条件判断。
if-else
if age > 18 { fmt.Println("Adult") } else { fmt.Println("Minor") }
Go 语言只有 for 一种循环语句,支持三种形式:传统形式、条件形式和无限循环形式。
for
// 传统形式 for i := 0; i < 10; i++ { fmt.Println(i) } // 条件形式 i := 0 for i < 10 { fmt.Println(i) i++ } // 无限循环 for { fmt.Println("Hello") }
switch 语句用于多条件判断,支持省略 break。
switch
break
switch day := 3; day { case 1: fmt.Println("Monday") case 2: fmt.Println("Tuesday") default: fmt.Println("Other day") }
以 // 开头,适用于简短的说明。
//
// 这是一个单行注释 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 的并发编程、接口和反射等高级特性。