2.5. 导入声明
导入声明以关键字 import
开始,一般语法如下:
import 导入模块路径
比如下面的例子:
// 版权 @2023 凹语言 作者。保留所有权利。
import "errors"
func main {
err := errors.New("!!!")
println("err:", err.Error())
}
func getAnswer => i32 {
return 42
}
程序开始处的 import "errors"
声明导入了凹的内置 errors
模块,后续的函数中即可使用该模块的公开对象——如例子中的 errors.New
函数;.
在这里被称为选择操作符,它的含义是从左侧的对象(模块)中选择名称与右侧相同的那个对象来使用,该操作符除了用于选择模块公开的函数、全局变量等对象,还用于选择结构体的成员(详见第6章)。
导入声明应位于源文件内的所有非导入声明之前(既位于头部,紧随文件头注释之后)。若导入多个模块,可以使用括号成组导入,形如:
import (
"errors"
"strconv"
)
该声明与下述声明是等价的:
import "errors"
import "strconv"
在导入模块时,可以给模块起别名,一般语法如下:
import 导入模块路径 => 模块别名
这种用法可以解决同时导入两个路径不同,但名字相同的模块时名字冲突的问题,例如:
import (
"errors"
"mypackage/errors" => myerrors
)
func main {
err := errors.New("!!!") // 调用内置 errors 模块
myerr := myerrors.New("!!!") // 调用 mypackage/errors 模块
}
与其他声明不同,导入声明的作用范围是当前源文件,如果一个模块内的两个源文件使用了同一个第三方模块,那么两个文件内都需要其导入声明。
在凹语言中,每个源文件导入的其他模块都必须被使用,也就是说,如果导入了一个模块,但并未使用其任何对象,将被视为语法错误。