Go 语言入门指南:基础语法和常用特性解析(上) | 青训营

80 阅读4分钟

1. 什么是Go语言?

Go 语言是一种编译型、并发型、垃圾回收型的编程语言,由 Google 公司开发,于 2009 年正式发布。Go 语言的设计目标是实现高效的编译、运行和部署,以及简洁的语法和易于维护的代码。本文将介绍 Go 语言的一些基础语法和常用特性。

2. 包和导入

Go 语言的代码组织单位是包,即 package,每个包都有一个唯一的名字,通常与其所在的目录名相同。一个包可以包含多个源文件,每个源文件都以 .go 为扩展名,并且以 package 声明开头,指定该文件属于哪个包。

要使用其他包中的代码,需要使用 import 声明导入该包。导入的包名可以是完整的路径,也可以是相对于 GOPATH 环境变量的路径。导入后,可以使用 包名.标识符 的方式访问包中的公开(首字母大写)的变量、常量、类型、函数等。

下面是一个简单的示例,展示了如何定义和导入包:

// 包名:main  
package main  
  
// 导入 fmt 包  
import "fmt"  
  
func main() {  
// 调用 fmt 包中的 Println 函数打印 "Hello, world!"  
fmt.Println("Hello, world!")  
}  

3. 常量、变量和数据类型

Go 语言支持多种基本数据类型,如整数(int)、浮点数(float)、布尔值(bool)、字符串(string)等,以及复合数据类型,如数组(array)、切片(slice)、映射(map)、结构体(struct)、接口(interface)等。

要声明一个变量,可以使用 var 关键字,后跟变量名和类型。变量声明后,默认会被初始化为零值,即数值类型为 0,布尔类型为 false,字符串类型为空字符串等。也可以在声明时给变量赋一个初始值,使用 = 号分隔。

要声明一个常量,可以使用 const 关键字,后跟常量名和类型。常量声明后必须赋一个初始值,并且不能再被修改。

下面是一个示例,展示了如何声明和使用常量和变量:

// 声明一个整数常量 PI  
const PI int = 3  
  
// 声明一个布尔变量 flag,并赋值为 true  
var flag bool = true  
  
// 声明一个字符串变量 name,并赋值为 "Fish"  
var name string = "Fish"  
  
// 声明一个浮点数变量 x,并赋值为 1.23  
var x float64 = 1.23  
  
// 声明一个数组变量 array,并赋值为 [1, 2, 3]  
var array [3]int = [3]int{1, 2, 3}  
  
// 声明一个切片变量 slice,并赋值为 arr 的前两个元素  
var slice []int = arr[:2]  
  
// 声明一个Map类型变量 m,并赋值为 {"a": 1, "b": 2}  
var m map[string]int = map[string]int{"a": 1, "b": 2}  
  
// 声明一个结构体类型 Person,并定义两个字段 name 和 age  
type Person struct {  
    name string  
    age int  
} 
// 声明一个结构体变量 p,并赋值为 Person 类型的实例  
var p Person = Person{name: "Bob", age: 20}  
  
// 声明一个接口类型 Animal,并定义两个方法 Eat 和 Sleep  
type Animal interface {  
    Eat() string  
    Sleep() int  
}  
  
// 声明一个接口变量 a,并赋值为 ani  
var a Animal = ani  

3. 函数

Go 语言中的函数是一等公民,可以被变量存储,也可以作为参数传递给其他函数,或者作为返回值返回给调用者。函数可以定义在包级别,也可以定义在局部作用域。

要定义一个函数,可以使用 func 关键字,后跟函数名、参数列表和返回值列表。参数列表中指定了函数接收的参数的名字和类型,返回值列表中指定了函数返回的结果的类型。如果函数没有参数或返回值,可以省略相应的列表。如果函数有多个返回值,并且都是同一类型,可以只写一次类型。 函数的定义语法如下:

func 函数名(参数列表) (返回值列表) {  
    // 函数体  
}  

函数名必须以字母或下划线开头,不能与关键字或预定义标识符重名。

要调用一个函数,可以使用函数名后跟实参列表。如果函数有返回值,可以使用赋值语句接收返回值。如果函数返回多个值,并且只需要其中一部分,可以使用 _忽略不需要的返回值。 例如:

a := add(1, 2) // 调用 add 函数,传递 1 和 2 作为参数,将返回值赋值给变量 a  
_, c := swap("hello", "world") // 调用 swap 函数,传递 "hello" 和 "world" 作为参数,将返回值赋值给变量 b 和 c  
swap("foo", "bar") // 调用 swap 函数,传递 "foo" 和 "bar" 作为参数,忽略返回值  

小结

本文介绍了 Go 语言的基础语法和常用特性,包括包和导入、常量、变量和数据类型、函数等。通过这些内容,可以了解 Go 语言的代码结构和执行流程,以及如何定义和调用函数。因为篇幅有限,将在下篇继续介绍。