【go语言实践】基础篇 -- go语言“包“的操作及函数基本格式

go语言包的概念

所谓包,就是在不同的文件夹创建不同的go源文件,go的每一个文件都属于一个包,go是以包来管理文件和项目的。总结下来包主要有三个作用:

  • 区分相同名字的变量和函数
  • 当程序文件很多时可以很好地管理项目
  • 控制函数、变量等访问范围

打包的语法:

package + 包名,也就是说,我们是在go文件中将本文件声明要打包

package util
func Calc (num1 int, num2 int) int {
    // ...
}

引入包

import + “包名”

由于go没有public/private等关键字,一个包中的变量、函数是否允许让其他包引用,是根据命名首字母是否大小写决定的,大写则可以在外部引用,小写则不能在外部引用。
引入外部包之后我们用包名.func即可引用

package main

import "util"
func main {
    var num1 int = 10
    var num2 int = 12
    util.Calc(num1, num2)
}

打包细则

  1. 在给一个文件打包时,包对应一个文件夹,通常文件夹名与包名一致(可以不一致,建议一致),一般为小写字母,文件夹下可以有多个文件,多个文件需要打包的的文件中使用package xxx
  2. import包的方法,在前面的文章其实也讲过
import "util"
import (
    "util"
    "fmt"
)
  1. package的指定在第一行,其次是import
  2. import包时,go的查找路径从$GOPATH的src下开始,不用带src,编译器会自动从src下开始引入。
  3. 本包的函数名首字母大写可被其他包引用,小写不能
  4. 访问其他包函数的方法:包名.函数名
  5. 如果包名较长,可以给包名起别名,但之后原包名不能再用
import (
    "fmt"
    util "project/demo/utils"
)

func main() {
    // 使用util别名
    result := util.calc()
}
  1. 同一个包下不能有相同的函数名,同一个文件中肯定不行,同一个包下的不同文件也不行
  2. 如果要编译成可执行文件,必须将包名声明为main包,main包只有一个。如果只是写一个库,包名可以自行定义。
  3. 在编译go代码时,先切换到$GOPATH目录进行编译,编译产出可指定路径和名称如:go build -o bin/my_test go_code/project/my_test,其中my_test是main包所在的文件夹,go编译必须编译main包所在的文件夹。此外,go build通常还会生成一个package目录,里面存放了本次编译出来的静态库.a文件

go语言基本函数的定义

func 函数名 (形参列表) (返回参数列表) {
执行语句
return 返回值列表
}
与c不同的是,go语言可以有多个返回参数,而不用把它作为指针或引用返回,若参数只有一个或返回值只有一个也可以不用括号
eg:

func calc (num1 float64, num2 float64, operator byte) float64 {
    switch operator {
        case '+':
            return num1 + num2
        default:
            return num1 * num2
    }
}

go 语言中,同名同参的函数不能定义在同一个文件中,但我们可以定义在不同的文件中

你可能感兴趣的:(golang,开发语言,后端)