广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang包的特性有哪些
  • 796
分享到

golang包的特性有哪些

2023-07-05 00:07:21 796人浏览 安东尼
摘要

这篇文章主要介绍了golang包的特性有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang包的特性有哪些文章都会有所收获,下面我们一起来看看吧。特性:1、包名一般是小写,用一个简短且有意义的名称;2

这篇文章主要介绍了golang包的特性有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang包的特性有哪些文章都会有所收获,下面我们一起来看看吧。

特性:1、包名一般是小写,用一个简短且有意义的名称;2、包名一般要和所在的目录同名,也可不同名,包名中不能包含“-”等特殊符号;3、包一般使用域名作为目录名称,这样能保证包名的唯一性;4、包名为main的包为应用程序的入口包,编译源码时如果没有main包时,将无法编译输出可执行的文件;5、一个目录下的所有源码文件只能属于同一个包,同样属于同一个包的源码文件不能放在多个目录下。

Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。Go语言中为我们提供了很多内置包,如 fmt、os、io 等。

任何源代码文件必须属于某个包,同时源码文件的第一行有效代码必须是package pacakgeName 语句,通过该语句声明自己所在的包。

包的基本概念

Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。

包可以定义在很深的目录中,包名的定义是不包括目录路径的,但是包在引用时一般使用全路径引用。比如在GOPATH/src/a/b/ 下定义一个包 c。在包 c 的源码中只需声明为package c,而不是声明为package a/b/c,但是在导入 c 包时,需要带上路径,例如import "a/b/c"

Go语言包特性

  • 包名一般是小写的,使用一个简短且有意义的名称;

  • 包名一般要和所在的目录同名,也可以与其目录不同名(但最好不要这样做),包名中不能包含- 等特殊符号。

  • 包一般使用域名作为目录名称,这样能保证包名的唯一性,比如 GitHub 项目的包一般会放到GOPATH/src/github.com/userName/projectName 目录下。

  • 包名为 main 的包为应用程序的入口包,编译不包含 main 包的源码文件时不会得到可执行文件。

  • 一个文件夹下的所有源码文件只能属于同一个包,同样属于同一个包的源码文件不能放在多个文件夹下。

Go语言包设计思想

任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的单元以便于理解和更新,在每个单元更新的同时保持和程序中其它单元的相对独立性。这种模块化的特性允许每个包可以被其它的不同项目共享和重用,在项目范围内、甚至全球范围统一的分发和复用。

每个包一般都定义了一个不同的名字空间用于它内部的每个标识符的访问。每个名字空间关联到一个特定的包,让我们给 类型、函数 等选择简短明了的名字,这样可以避免在我们使用它们的时候减少和其它部分名字的冲突。

当我们修改了一个源文件,我们必须重新编译该源文件对应的包和所有依赖该包的其他包。即使是从头构建,Go 语言编译器的编译速度也明显快于其它编译语言。Go 语言的闪电般的编译速度主要得益于三个语言特性。

显式声明

所有导入的包必须在每个文件的开头显式声明,这样的话编译器就没有必要读取和分析整个源文件来判断包的依赖关系。

禁止循环依赖

禁止包的环状依赖,因为没有循环依赖,包的依赖关系形成一个有向无环图,每个包可以被独立编译,而且很可能是被并发编译。

目标文件

编译后包的目标文件不仅仅记录包本身的导出信息,目标文件同时还记录了包的依赖关系。因此,在编译一个包的时候,编译器只需要读取每个直接导入包的目标文件,而不需要遍历所有依赖的的文件。

关于“golang包的特性有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“golang包的特性有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: golang包的特性有哪些

本文链接: https://www.lsjlt.com/news/348643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang包的特性有哪些
    这篇文章主要介绍了golang包的特性有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang包的特性有哪些文章都会有所收获,下面我们一起来看看吧。特性:1、包名一般是小写,用一个简短且有意义的名称;2...
    99+
    2023-07-05
  • golang异步的特点有哪些
    这篇文章主要讲解了“golang异步的特点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang异步的特点有哪些”吧!首先,让我们明确一下什么是异步编程。通常情况下,我们的代码在执...
    99+
    2023-07-05
  • Golang中多态特性的实现方法有哪些?
    如何在Golang中实现多态特性?多态是面向对象编程中的一个重要特性,它允许我们使用同一种类型但具有不同实现的对象,并且能够在运行时动态选择使用哪个对象。在很多面向对象编程语言中,如Java和C++,多态是一种自然且常用的特性。但是,在Go...
    99+
    2023-12-29
    Golang中的接口(Interface) Golang中的结构体(Struct) Golang中的类型断言(Type
  • Golang的特点及写法有哪些
    今天小编给大家分享一下Golang的特点及写法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、Golang的特点及应...
    99+
    2023-07-05
  • Spring的特性有哪些
    Spring的特性有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring引入传统的基于mvc的项目框架结构:Entity / dao / servic...
    99+
    2023-05-31
    spring
  • Linux7的特性有哪些
    Linux7的特性有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.对Windows 产品的支持早在2009年,微软和红帽签订了一份旨在为Windows和Linux用户提...
    99+
    2023-06-07
  • JavaScript的特性有哪些
    这篇文章主要讲解了“JavaScript的特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript的特性有哪些”吧!ES2015二进制和...
    99+
    2022-10-19
  • ecmascript的特性有哪些
    本篇内容介绍了“ecmascript的特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • html5的特性有哪些
    本篇内容介绍了“html5的特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • servlet3的特性有哪些
    本篇文章为大家展示了servlet3的特性有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Servlet 3.0 新特性概述Servlet 3.0 作为 Java EE 6 规范体系中一员,随着...
    99+
    2023-05-31
    servlet3
  • angularjs的特性有哪些
    AngularJS的特性有以下几个:1. 双向数据绑定:AngularJS通过利用数据模型和视图之间的数据绑定,实现了自动的双向数据...
    99+
    2023-10-07
    angularjs
  • vue3.0的特性有哪些
    vue3.0的特性有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。vue是什么软件Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它...
    99+
    2023-06-06
  • Python3.8的特性有哪些
    本篇文章为大家展示了Python3.8的特性有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码...
    99+
    2023-06-14
  • JSON.stringify()的特性有哪些
    这期内容当中小编将会给大家带来有关JSON.stringify()的特性有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JSON.stringify() 方法能将一个 JavaScript 对象或值转...
    99+
    2023-06-17
  • c#的特性有哪些
    本篇文章给大家分享的是有关c#的特性有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. ObsoleteAttributeObsoleteAttribute 适用于除组件...
    99+
    2023-06-15
  • Python的特性有哪些
    这篇文章主要讲解了“Python的特性有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的特性有哪些”吧! 面向对象的特性面向对象的程序设计解决了结构化程序设计的复杂...
    99+
    2023-06-02
  • golang有什么特性
    golang的特性:1、简洁的语法,其语法非常简洁清晰和易于理解;2、并发编程支持,其内置了支持并发编程的原生机制;3、自动垃圾回收机制,这意味开发无需手动管理内存;4、高性能,其采用了基于编译的静态类型检查,使代码在运行时具有较高的性能;...
    99+
    2023-07-17
  • golang包管理工具有哪些
    golang中的包管理工具有:1.go mod,golang1.11版本中的官方包管理工具;2.govendor,golang的依赖包管理工具;3.godep,golang官方的依赖管理工具;4.Module,golang官方提供的包管理工...
    99+
    2022-10-06
  • HASH有哪些特性
    这篇文章主要为大家展示了“HASH有哪些特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HASH有哪些特性”这篇文章吧。哈希满足特性平衡性 :平衡性是指哈希的...
    99+
    2022-10-19
  • VB.NET有哪些特性
    这篇文章将为大家详细讲解有关VB.NET有哪些特性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下面以VB2010为例加以说明。首先,在语言中取消连接符这个改动表面看很小,因为basic的开发者都知晓,原...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作