go语言进阶 包

package 包:

go 语言使用包(package)这种语法元素来组织管理源码,所有语法可见性均定义在 package 这个级别 与 Java python  相似

1. main 包:

go 语言的程序入口 main() 函数所在的包 (package) 叫做 main包 , mian 包想要引入别的代码 需要 import 导入

2.package

src 目录是以代码包的形式组织并保存 Go 源文件的。 每个代码包都和 src 目录下的文件夹 一一对应。每个子目录都是一个代码包;通过 go get 的第三方包也都是存放在这个(ga path/scr) 目录下

代码包包名 和 目录名, 不要求一致。比如文件目录叫 hello, 但是代码包包名可以声明为 'main', 但是同一个目录下的源文件第一行声明的所属包 必须一致

例如: 同一目录下所有 .go 文件的第一行添加 包定义, 以标记该文件归属的包

package 包名
包需要满足:
  • 一个目录下的同级文件归属一个包,也就是说 :在同一个包下面的所有文件的 package 名 都是一样的
  • 在同一个包下面的文件 package 名都建议设为 该目录名称。但是不是强制的 也就是说 包名可以 与其目录名不同。
  • 包名为 main 的包为 应用程序入口包, 其他包不能使用

同一个包下的文件属于同一个工程文件,不用 import 包,可以直接使用

包也可以嵌套定义, 对应的就是嵌套目录。但是包名必须与所在目录一致!

例如:

// 文件: qf/ruby/too.go 中
package ruby// 可以被导出的函数
func FuncPublic(){}// 不可以被导出的函数
func funcPrivate(){}

包中, 通过标识符首字母是否 大写, 来确定是否可以被导出  首字母大写才可以被导出,视为 public 公共的资源

3.import

要引入其他的包,可以使用 import 关键字  可以单个导入或者 批量导入

关于包的使用
  1. 一个目录下的同级文件归属一个包, package 声明要一致
  2. package 声明的包 和 对应的目录名可以不一致,但是习惯上还是写成一致的
  3. 包可以嵌套
  4. 同目录下的函数不需要导入包,可以直接使用
  5. main包, main() 函数 所在的包 其他的包不能直接使用
  6. 导入报的时候 路径需要从  src 下的目录开始写:

例如:

A:通常导入
//单个导入包
import  "package"//批量导入
import ("package1""package2""package3")
B:点操作

我们有时候会看到如下的 方式导入包

import(. "fmt"
)

这个点的操作 含义就是这个包导入之后 在你调用这个包的函数时 你可以省略前缀的包名, 也就是前面你调用的  ftm.Println("hello world") 可以省略写成 Println("hello world")

C:起别名

别名操作 顾名思义我们 可以把包名命名成 另一个我们用起来容易记忆的名字。导入时 可以为包名定义别名 语法演示:

import(p1 "package1"p2 "package2")//使用是别名操作 调用函数是前缀变成我们的前缀p1.Method()
D:_操作

如果仅仅需要导入包时执行 初始化操作, 并不需要使用其包内的函数 变量等资源, 则可以在导入包时  匿名导入

这个操作经常让人很费解的一个操作符, 看看下面这个 import:

import("database/sql"_ "github.com/ziutek/mymysql/godrv"
)

 _ 操作符其实就是引入该包而不是直接使用包里的函数。而是调用了该包里面的 init 函数。也就是说 使用下换线 作为包的别名会仅仅执行  init()  函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux内核下rapidio(TSI721)相关笔记汇总

1 驱动的安装 和 主要功能(doorbell, DMA, rionet)的简单测试 linux5.4 下使用rapidio(tsi721)的笔记记录_kernel-rapidio-CSDN博客 2 机理分析 linux内核下,rapidio网络系统建立的过程(枚举 和 发现)_linux rapidio-CSDN博客 linux内核下,(rapidio)T…

新火种AI|倒反天罡!美国名校斯坦福AI团队抄袭中国大模型

作者:一号 编辑:美美 中国大模型被抄袭,怎么不算是某种层面上的国际认可呢? 5月29日,斯坦福大学的一个AI研究团队发布了一个名为「Llama3V」的模型,号称只要 500 美元就能训练出一个 SOTA 多模态模型&am…

Python库之pandas的简介、安装、使用方法详细攻略

Python库之pandas的简介、安装、使用方法详细攻略 简介 pandas 是 Python 中用于数据分析和操作的一个强大库,它提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。pandas 适用于处理表格数据(例如CSV文件、…

元宇宙概念及关键技术

“元宇宙”这个概念最早出自上世纪90年代出版的一部美国人写的科幻小说《雪崩》(Snow Crash),作家Neal Stephenson这样定义元宇宙:“元宇宙是指一个脱胎于现实世界,又与现实世界平行、相互影响,并且始终在线…

知识库系统:从认识到搭建

在这个信息过载的时代,企业越来越需要一个集中的知识库系统来促进员工协作和解决问题。本文跟着LookLook同学一起来探讨搭建高效知识库系统的所有注意事项和知识库系统的最佳推荐。 | 什么是知识库系统 知识库系统是一种软件或工具,旨在填补组织内的知识…

超越传统AI 新型多智能体系统MESA,探索效率大幅提升

探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习(MARL)的征途中,如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中,这一问题变得更加棘手。《MESA: Cooperative Meta-…

用扫描书籍的功能扫描文档是扫描件吗?

当使用扫描书籍的功能来扫描文档时,产生的结果通常被称为“扫描件”或“扫描图像”。这里的“扫描”一词指的是通过扫描仪或具有扫描功能的设备(如一些高端打印机、多功能一体机等)将纸质文档转换为数字图像的过程。 扫描件通常是高清晰度的…

关于phpstorm创建类和方法时带描述注释

展示效果&#xff1a; 1、使用phpstorm创建类文件时自带注释及注释编辑 步骤1&#xff1a; 步骤二&#xff1a; 内容&#xff1a; <?php /** * Desc: * author guowei * datetime $DATE $TIME */ #if (${NAMESPACE}) namespace ${NAMESPACE}; #end class ${NAM…

计算机网络 —— 数据链路层(以太网)

计算机网络 —— 数据链路层&#xff08;以太网&#xff09; 什么是以太网以太网传输介质和拓扑结构的发展传输介质的发展&#xff1a;拓扑结构的发展&#xff1a; 10BASE-T 以太网适配器和MAC地址适配器&#xff08;Adapter&#xff09;MAC地址适配器与MAC地址的关系 MAC帧以太…

Python跨文件变量:深入探索与实用技巧

Python跨文件变量&#xff1a;深入探索与实用技巧 在Python编程中&#xff0c;跨文件变量是一个常见且复杂的问题。它涉及到多个文件之间的数据共享和交互&#xff0c;对于大型项目或复杂系统尤为重要。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;详细探讨Py…

使用Java进行网络采集:代理IP与参数传递详解

在Java编程语言中&#xff0c;参数传递机制是一个常见的讨论话题。理解这一点对于编写高效且无错误的Java代码至关重要。本文将探讨Java的参数传递机制&#xff0c;解析其究竟是“按引用传递”还是“按值传递”&#xff0c;并结合网络爬虫技术的实例&#xff0c;展示如何在实际…

【机器学习】机器学习与推荐系统在电子商务中的融合应用与性能优化新探索

文章目录 引言机器学习与推荐系统的基本概念机器学习概述监督学习无监督学习强化学习 推荐系统概述基于内容的推荐协同过滤混合推荐 机器学习与推荐系统的融合应用用户行为分析数据预处理特征工程 模型训练与评估模型训练模型评估 个性化推荐基于用户的协同过滤基于商品的协同过…

【leetcode--两数之和(输入有序数组)】

给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。你可以假设每个输入 只对应…

Autosar MCAL配置——SPI(EB)

SPI文章目录 前言一、Autosar相关概念二、SPI配置1.General2.Channel3.ExternalDevice4.Job5.SpiSequence6.PhyUnit前言 SPI基础知识 SPI( Serial Peripheral Interface,串行外设接口)总线是摩托罗拉公司设计的一种全双工 同步串行通信接口。和IIC总线一样,它也分主机和从…

【Git教程】(二十)外包长历史记录 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

Git教程 外包长历史记录 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 外包项目历史3.2 链接到当前活动版本库 Git 版本库会随着时间积累越来越大&#xff0c;会影响它的内存管理效率。通常在版本库中只有源 代码文件情况下&#xff0c;这点效率影响可以忽略不计。在现…

2024.05.24 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、实习丨蔚来2025届实习生招募计划开启&#xff08;内推&#xff09; 实习丨蔚来2025届实习生招募计划开启&#xff08;内推&#xff09; 2、校招&实习丨联芯集成电路2025届暑期实习…

WSDM 2023 推荐系统相关论文整理(三)

WSDM 2023的论文录用结果已出&#xff0c;推荐系统相关的论文方向包含序列推荐&#xff0c;点击率估计等领域&#xff0c;涵盖图学习&#xff0c;对比学习&#xff0c;因果推断&#xff0c;知识蒸馏等技术&#xff0c;累计包含近四十篇论文&#xff0c;下文列举了部分论文的标题…

Stable Diffusion【应用篇】【图片修复】:模糊头像照片的高清修复

本文主要是回复一下后台小伙伴留言的问题。经小伙伴本人同意后&#xff0c;允许使用待修复的照片。 我们先看一下待修复的照片。 在向我咨询之前&#xff0c;小伙伴也自己进行了尝试&#xff0c;如果直接使用Stable Diffusion的后期处理功能&#xff0c;出来的图片效果是这样的…

GPEN——使用GANs恢复对人脸图像进行修复

1. 简介 盲目的面部修复&#xff08;Blind Face Restoration, BFR&#xff09;是一个活跃的研究领域&#xff0c;它涉及到在没有任何先验信息的情况下改善低质量&#xff08;Low Quality, LQ&#xff09;图像的质量。这确实是一个具有挑战性的问题&#xff0c;因为模型需要能够…

3分钟学会短信群发-在线云短信平台发送教程

在线云短信平台发送教程 这是一个简单的短信平台的电脑在线发送教程&#xff0c;快速上手三分钟搞定&#xff0c;欢迎讨论分享&#xff1a; 1.登录短信平台 找一个资质齐全的在线云短信平台&#xff0c;以赛邮为例&#xff0c;注册认证后创建短信模版。 2.创建短信模版 输入编辑…