Golang的包

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

包是golang的一种源码组织方式,一个以.go结尾的源码文件仅能归属于一个包。包可以看做一个类库或者命名空间,当在一个 .go 文件里导入一个包后,就可以使用该包里面的常量、变量、类型、函数名、结构字段等等。


目录结构:

apps/
  src/
    helloworld/
      hello.go
    init/
      hello.go
      firstApp.go
  bin/
  pkg/

  • helloworld/hello.go
// hello.go
package nihao

import "fmt"

func Shout() {
    fmt.Println("Hello, what's your name?")
}

func main() string {
    return "this is a function named 'main' in nihao package"
}
  • init/hello.go
// hello.go
package main

func sing() string {
    return "Jingle bell, jingle bell, jingle all the way!"
}
  • init/firstApp.go
//firstApp.go
package main

import (
    "fmt"
    "learning/helloworld"
)

func main() {
    fmt.Println(test())
    nihao.Shout()
}

包名和路径的关系

  • 从helloworld/hello.go的源码中看出,包名和最后一个路径名可以不一致。
  • 编译后的可执行文件是以最后路径名而命名的。
  • 从init/firstApp.go的源码中看出,在import引用包名时,是以路径名引用的,但调用时是以包名来调用的。

main包

  • 如果源码文件属于main包,那么这些源码文件时属于一个可执行文件的源码文件,否则就属于函数包。
  • main包中必须有main函数,因为可执行程序总是从main包中的main函数开始执行。
      如helloworld/hello.go源码中。这里的main函数虽然也是main,但是就只是nihao包中的一个普通函数了。由于main是小写,这个函数只能在nihao包中被调用。

包函数名称大小写的区别

  • 当一个包中的函数允许其他包可以调用时,需要把名称命名为首字母大写,相当于给这个函数赋予了类中的public属性。
      如果是小写名称,那么这个函数只在该包内可见(可调用),其他包无法调用。这相当于给这个函数赋予了类中的private属性。
    强调一下,go语言没有类和继承的概念

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

本文来自:简书

感谢作者:Mysic

查看原文:Golang的包

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

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