golang中自定义包

小刀田田 · · 2071 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

导出

golang中默认以文件夹名作为包名,导入的文件的路径为$GOPATH/src

例如我们在 $GOPATH/src下面建立一个gopackage的一个文件夹,下面建立一个abc.go的文件,文件内容如下

package gopackage

import "fmt"

const X = 5
var Y = 10

// Add int 加
func Add(x, y int) int {
    return x + y
}

// Minus int 减
func Minus(x, y int) int {
    return x - y
}

func mutiply(x,y int) int {
    return x * y
} 

则我们在包外部使用gopackage包中的函数时,导入格式是这样的:

package main

import (
    "fmt"
    
    "gopackage"
)

func main() {
    x, y := gopackage.X, gopackage.Y
    fmt.Println(gopackage.Add(x, y))
    fmt.Println(gopackage.Minus(x, y))
    // fmt.Println(gopackage.mutiply(x,y)) //mutiply not exported by package gopackage
}

我们在abc.go文件中需要导出的函数的首字母都是大写的,这是因为只有首字母大写的标识符才可以导出,mutiply(int,int)int函数不可以被导出,编译失败。

别名

当我们使用多个自定义包时如果发生冲突,怎么办呢,我们可以给不同的包提供不同的别名

package main 

import (
    "fmt"
    
    calculate "gopackage"
)

func main(){
    // fmt.Println(gopackage.Add(x, y))
    fmt.Println(calculate.Add(1, 1)) //使用别名调用相应函数
}

如果abc.go文件中包名不是文件夹的名字,如

// package gopackage
package abc

则在外部导入是,golang会自动为该包提供别名

package main

import (
    "fmt"
    
    abc "gopackage"
)

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:小刀田田

查看原文:golang中自定义包

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2071 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传