如果你有其他语言的基础,可见性应该很好理解。
java的可见性是通过public private来描述的。
python的可见性是通过_some_var下划线来约定的。

本文翻译自:https://www.callicoder.com/golang-packages/
为啥老外能把事情说的这么明白。。。
golang中任何一个文件都要属于一个package
多个文件可以属于同一个package
同一个package中可以有两个同名的函数吗?
如何导入一个package
如何导入一个第三方的package
一个包里面含有另一个包可以吗?
包和目录有什么联系吗?
一个包可以有多个init吗?

函数可以用来复用代码。包也是复用代码的一种方式。package把你的go源码文件组织成为一个单个的单元,让你的代码更加模块化,可重用。

在这篇文章中将要学习如何组织代码成为package,如何导入一个包,如何导出包里面的函数,type,或者变量,如何导入第三方包。

Let’s get started!

In the most basic terms, A package is nothing but a directory inside your Go workspace containing one or more Go source files, or other Go packages.

Every Go source file belongs to a package. 使用下面的语法声明一个源文件属于一个包

package <packagename>

这行代码需要写在源文件的开头。定义在源文件里面的函数,types,变量都会成为这个包的一部分。

You can choose to export a member defined in your package to outside packages, or keep them private to the same package. Other packages can import and reuse the functions or types that are exported from your package.

让我们看一个例子:

import "fmt"

fmt is a core library package that contains functionalities related to formatting and printing output or reading input from various I/O sources. It exports functions like Println(), Printf(), Scanf() etc, for other packages to reuse.

使用package组织代码有如下好处:

  • It reduces naming conflicts. You can have the same function names in different packages. This keeps our function names short and concise.

  • It organizes related code together so that it is easier to find the code you want to reuse.

  • It speeds up the compilation process by only requiring recompilation of smaller parts of the program that has actually changed. Although we use the fmt package, we don’t need to recompile it every time we change our program.

main package和main函数

Go programs start running in the main package. It is a special package that is used with programs that are meant to be executable.

By convention, Executable programs (the ones with the main package) are called Commands. Others are called simply Packages.

The main() function is a special function that is the entry point of an executable program. Let’s see an example of an executable program in Go -

// Package declaration
package main// Importing packages
import ("fmt""time""math""math/rand"
)func main() {// Finding the Max of two numbersfmt.Println(math.Max(73.15, 92.46))// Calculate the square root of a numberfmt.Println(math.Sqrt(225))// Printing the value of `												

golang package 是什么意思?一份来自初学者的golang package体验指南相关推荐

  1. 年轻人,看你骨骼惊奇,我这有一份来自阿里的Android开发学习指南,不仅能让你月入5w,度过中年危机都不是问题!

    摘要 很简单,我这有一份来自阿里程序员佛系月薪5w指南,看你骨骼惊奇,印堂光亮,一看就是将要大富大贵.走向人生巅峰之人,就不收你钱了,一个点赞就送给你怎么样? 缘起 为什么写下这篇文章? 疫情自爆发以 ...

  2. 一份来自贾扬清的AI修炼指南:不存在算法工程师,调参侠没有市场

    作者 | 陈彩娴.蒋宝尚 编辑 | 青 暮 算法工程师不仅需要具备牛逼的算法能力,还要精通业务.善于沟通?(小本子赶紧记下来!) 8月23日晚,知乎直播"AI时代听大咖聊"邀请到A ...

  3. 一份来自区块链行业的《高考志愿填报指南》

    来源 | 白话区块链 责编 | 晋兆雨 头图 | 付费下载于视觉中国 随着国内外越来越多主流机构.企业的热捧,区块链这一科技变革显然成为未来备受瞩目的一个信息技术新兴行业. 许多专业人士直言不讳地表示 ...

  4. 2016年终总结:一份来自跨界喜剧人的告白

    一份来自跨界喜剧人的告白 我的2016年终总结,点着烟一直抽着写的.作为一名大四的准毕业生,一位三流学校四川娃,对比起来各位前辈来讲也许就有些乏味了,我没有你们那么丰富多彩的生活,但也有属于自己私藏的 ...

  5. PPT下载 | 一份来自华为内部的5G培训课件

    今天给大家分享一份来自华为的5G培训PPT,希望大家对5G技术有一个全面的了解. 我们先来看看部分内容: 完整版获取方式见文末 1.5G愿景.应用场景.协议进展及产业发展 2.5G网络组网方式及演进 ...

  6. 零伽壹解析 | 一份来自区块链行业的《高考志愿填报指南》

    随着区块链产业的蓬勃.政府的扶持,也吸引了学生及家长的关注,不少高考学子对区块链领域颇有兴趣,而区块链领域也恰恰需要相关的人才资源.最近这几年互联网相关的专业已经成为大学热门专业,也成为了不少学子的高 ...

  7. 【经验分享】- 这是一份来自 IT 男的电脑使用建议

    这是一份来自 IT 男的电脑使用建议 1. 写在前面 ​2018 年高考结束我拿到了第一台笔记本电脑,此前对电脑接触地并不多,因此在这几年的电脑使用过程中积累了一些个人使用经验和使用技巧想要分享给可能 ...

  8. 一份来自太空的新年礼物——“元旦京港澳天宫对话”活动侧记

    文章目录 一份来自太空的新年礼物--"元旦京港澳天宫对话"活动侧记 前言 爱国是中国载人航天不变底色 不懈奋斗换来"感觉良好" 梦想永不失重 脚步始终向前 一份 ...

  9. 服务器机房空调维修,一份来自空调机房的维修方案?老司机看了就懂

    原标题:一份来自空调机房的维修方案?老司机看了就懂 一份来自空调机房的维修方案?老司机看了就懂 现在对于很多人来说,家庭用的空调维修和保养方法都非常的清楚,但是一说到空调机房,不少的人们 就犯愁,不错 ...

最新文章

  1. 阿里老员工吐槽:新员工水平差!不服管理!还不加班!我要汇报经理让对方无法转正!...
  2. 第5章 用户身份与文件权限
  3. SUN StorEdge 3320更改磁盘状态
  4. Android中插件开发篇总结和概述
  5. 在Java里如何给一个日期增加一天
  6. git reflog and checkout
  7. 系统架构师学习笔记_第四章(上)_连载
  8. Nginx源码目录介绍
  9. ipv4转ipv6 山石防火墙命令(教育网)
  10. DDWRT几种无线工作模式简介
  11. 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
  12. java三维动画_基于Java3D的交互式三维动画的研究
  13. jmeter 录制--https代理证书导入IOS手机
  14. 电路课组(一)电路原理 Review 1 线性电路分析基础
  15. python打开pdf文档
  16. linux之cut的使用
  17. JS.Razor.CSHtml结合使用
  18. UDA/语义分割:Feature Re-Representation and Reliable Pseudo Label Retraining for Cross-Domain Semantic
  19. 2019,收获,静静等待
  20. 2021-2027全球与中国双面身份证打印机市场现状及未来发展趋势

热门文章

  1. 【会议/期刊】中科院推荐计算机领域人工智能方向会议和期刊列表
  2. Kubernetes-命名空间token(十五)
  3. 2014创新工场校招笔试题及参考答案
  4. 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
  5. 当前目标 1614868689
  6. linux-磁盘情况查询-待小结
  7. 2.7.3-YARN-获取debug命令:resourceManager+nodeManager
  8. ExchangeServer2016 HAB 分层通讯簿 设置教程
  9. 小米(MIUI)系统组招聘职位
  10. Bean context must contain FilterChainProxy