iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >go语言必须要有的包是什么
  • 546
分享到

go语言必须要有的包是什么

2023-07-04 22:07:35 546人浏览 安东尼
摘要

本篇内容介绍了“Go语言必须要有的包是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言必须有一个main包。Go语言是编译型的静态

本篇内容介绍了“Go语言必须要有的包是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

go语言必须有一个main包。Go语言是编译型的静态语言,所以在运行Go语言程序之前,需要先将其编译成二进制的可执行文件;而要生成Go语言可执行程序,必须要有名为main的包,且在该包下必须有且只有一个main函数。

1. 包的概念和源文件

Go程序是通过把包链接到一起构成的。包是由一个个一起定义了属于该包的常量、类型、变量、函数(它们可以被同一个包内的所有文件访问,也可以通过导出而被其他的包使用)的源文件构成的。每个包的代码都可以作为很小的复用单元,被其他项目所引用。

每个源文件都有一个package语句定义了它属于哪 个包,后面跟着可能为空的import集合声明了需要使用哪些包,再往后跟着可能为空的函数、类型、变量、常量的集合。

我们可以看到名为code和errno的文件的归属包,都为errno,这就表明,在Go中并不像Java那样以一个类作为复用单元,而是以包作为一个很小的复用单元。

总结:在Go中最小的单元是包,而包下的可以有多个源文件,源文件就相当于class类,每个源文件通过package语句声明了该文件属于哪个包。

2. main包

在Go语言里,命名为main的包具有特殊的含义。Go语言的编译程序会试图把这种名字的包编译为二进制的可执行文件。所有用Go语言编译的可执行程序都必须有一个名为main的包。

简单来说:要生成Go语言可执行程序,必须要有名为main的package包,且在该包下必须有且只有一个main函数

当编译器发现这个某个包的名字为main是,它一定也会发现名为main()是函数,否则不会创建可执行文件。main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名。

3. 包目录的命名规范

所谓无规矩不成方圆,在开发Go语言之前,我们一定要了解Go语言的一些特性和规范才能更好的开发出高质量,可通用的代码,不然开发出一个只有你能看明白的程序,那只能算是自娱自乐罢了。本节根据一些经典代码和公司开发习惯给出了一个命名规范示例,示例如下:

下面根据这个示例图,讲解一下我理解的开发规范:

  • conf: 本目录主要保存配置文件

  • handler:主要存放一些程序的入口文件,相当于Java中的Collter层

  • model:主要存放于数据库操作相关的文件

  • pkg:主要保存一些通用的工具类等代码

  • router:主要保存路由服务的代码

  • service:主要保存业务代码

  • vendor:主要保存项目本身的依赖包

  • conf.yaml:项目的配置文件,可放在跟目录下,也可放在conf文件夹下

  • main.go:程序的入口,一般放置在根目录下

4. 导入

包的引入原理

程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。一个被多个地方导入的包只会被导入一次。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。
包在导入时,查找依赖时根据从高到低的优先级来划分,大概:

  • 当前包下的vendor目录。

  • 向上级目录查找,直到找到src下的vendor目录。

  • 在GOPATH下面查找依赖包。

  • 在GOROOT目录下查找

包导入的语法

在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下:

  • 常规导入

import(    "fmt")

然后在代码里面可以通过如下的方式调用

fmt.Println("hello world")

上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块。

  • 点操作

import (   . "fmt")

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”)  可以省略的写成Println(“hello world”)。注意:该包内的函数不能与其重名。

  • 别名操作

import( f “fmt” )

别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字,别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”),通常为了解决导入多个重名包的问题。

  • _操作

import (    _ "GitHub.com/go-sql-driver/mysql")

_操作其实只是引入该包但不使用,通常只为了执行该包中所有的init()函数,最常见的就是上面的Mysql包。

“go语言必须要有的包是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: go语言必须要有的包是什么

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

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

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

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

下载Word文档
猜你喜欢
  • go语言必须要有的包是什么
    本篇内容介绍了“go语言必须要有的包是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言必须有一个main包。Go语言是编译型的静态...
    99+
    2023-07-04
  • Go语言中必须包含的一个包是什么
    标题:Go语言中必须引入的包 Go语言是一门开源的编程语言,由Google公司开发。它具有静态类型、并发性高、垃圾回收等特点,因此越来越受到程序员的喜爱。在Go语言中,必须引入的一个包...
    99+
    2024-03-15
    包:`fmt` `log` `net` go语言 格式化输出 标准库
  • 必备的Go语言包是什么
    标题:必备的Go语言包及具体代码示例 Go语言作为一种高效、简洁的编程语言,拥有丰富的标准库,其中一些包是在开发过程中必不可少的。本文将介绍一些必备的Go语言包,并提供具体的代码示例说...
    99+
    2024-03-15
    - go语言 - - 必备 go语言 格式化输出 标准库
  • Go语言是否有必要内存对齐
    这篇文章主要讲解了“Go语言是否有必要内存对齐”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言是否有必要内存对齐”吧!有些同学可能不知道,struct...
    99+
    2024-04-02
  • go语言的接口必须大写吗
    go语言的接口不需要大写,但建议将接口的名称大,其原因有:1、接口的可见性取决于其定义是在包外还是包内;2、大写的接口名称更容易被其他包导入和使用,提高了包的可用性和可读性;3、大写的接口名称也更符合Go语言的约定,让代码更易于理解和维护。...
    99+
    2023-07-10
  • 打包是必须的吗?Java 程序员必须要知道的打包技巧
    在 Java 程序开发中,打包是一个必须要掌握的技能。打包可以将多个 Java 文件打包成一个 jar 文件或者 war 文件,方便程序的分发和部署。那么,打包是必须的吗?我们来一起探讨一下。 首先,让我们看看不打包的情况下会发生什么。如...
    99+
    2023-09-29
    异步编程 打包 load
  • 存储数组时,Go语言中哪些关键字是必须要了解的?
    在Go语言中,存储数组是一种非常常见的操作。在进行存储数组操作时,有一些关键字是必须要了解的,这些关键字可以帮助我们更好地进行数组的存储和操作。本文将介绍Go语言中存储数组时必须要了解的关键字,并演示一些相关的代码。 一、var关键字 在G...
    99+
    2023-09-23
    关键字 存储 数组
  • Go语言分布式编程:打包教程是必须掌握的技能吗?
    随着现代应用程序的复杂性不断增加,分布式编程已经成为了一种常见的解决方案。而Go语言作为一种高效、并发、跨平台的编程语言,也在分布式编程领域中得到了广泛的应用。在Go语言中,打包(packing)是一种非常重要的技能,特别是在分布式应用程...
    99+
    2023-09-27
    分布式 教程 打包
  • Go语言的主要编写语言是什么?
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《Go语言的主要编写语言是什么?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧...
    99+
    2024-04-04
  • 如何在Go语言中创建一个必要的包
    如何在Go语言中创建一个必要的包 在Go语言中,包是组织代码的基本单元,它可以包含多个相关的函数、变量和类型定义。创建一个必要的包是每个Go语言程序员都需要掌握的基本技能。本文将演示如...
    99+
    2024-03-15
    导入包 声明包 包初始化 go语言
  • c语言中case后面必须跟什么
    c 语言中 case 后面必须跟一个常量表达式,包括整数常量、字符常量、枚举常量或其他常量组合。它用于在 switch 语句中将表达式值与 case 语句中的常量表达式进行比较,找到匹配...
    99+
    2024-05-12
    c语言
  • 实时自然语言处理在Go语言中的应用:容器是否是必须的?
    随着人工智能技术的快速发展,自然语言处理(NLP)在各个领域中得到了广泛的应用,如智能客服、智能翻译、智能搜索等。对于实时NLP处理,Go语言是一种非常适合的编程语言。但是,对于Go语言中的NLP应用,我们是否需要使用容器来实现呢? 首先...
    99+
    2023-10-06
    自然语言处理 容器 实时
  • Go语言接口的首字母必须大写吗?
    是的,在 go 语言中,接口的首字母通常是大写的。这样做是为了:遵循约定俗成;提高可读性,在代码中更显眼;区分类型和实例。规则例外包括嵌入式接口和测试接口,它们的首字母可以小写。 Go ...
    99+
    2024-04-02
  • 了解Go语言的删除操作:是否必要?
    了解Go语言的删除操作:是否必要? 在Go语言中,删除操作是一种常见且重要的操作,用于删除数据结构中的元素或者移除文件系统中的文件。但是是否每次操作中都需要进行删除操作呢?本文将探讨这...
    99+
    2024-04-02
  • 学习Go语言必备的一个包
    在学习Go语言过程中,有一个非常重要的包是不可或缺的,那就是fmt包。fmt包是Go语言中用来进行格式化输入输出的标准包,它提供了各种格式化输出函数,帮助程序员进行数据的展示和交互。在...
    99+
    2024-03-15
    学习 go go语言 格式化输出
  • 要在 Windows 上搞定 Bash,这些 Go 语言面试题你必须会!
    在现代软件开发中,面试是一个必不可少的过程。不管是求职者还是雇主,都需要通过面试来了解对方的技能和能力。而在面试过程中,Go 语言已经成为了一个越来越受欢迎的选择。因此,在本文中,我们将介绍一些关于 Go 语言的常见面试题,并且还将介绍如...
    99+
    2023-06-29
    面试 windows bash
  • 一文读懂:Go语言中必须掌握的类库有哪些?
    Go语言作为一种越来越流行的编程语言,拥有丰富的类库可供开发者使用。在学习和使用Go语言时,掌握一些常用的类库是非常重要的。本文将介绍一些在Go语言中必须掌握的类库,并附带具体的代码示...
    99+
    2024-03-01
    并发编程 web框架 标准库 go语言 并发访问
  • Go语言中ioutil包的作用是什么
    ioutil包是Go语言标准库中的一个工具包,提供了一些方便的文件I/O操作函数,用于处理文件和目录。它包括了一些常用的功能,如读取...
    99+
    2024-03-07
    Go语言
  • 了解Go语言的基础是什么语言很重要。
    标题:了解Go语言的基础是什么语言很重要 随着互联网技术的发展和应用需求的不断增加,越来越多的开发者开始关注并学习Go语言,这门由Google开发的编程语言以其简洁、高效和便捷的特点受...
    99+
    2024-04-02
  • Go语言常用内置包是什么
    今天小编给大家分享一下Go语言常用内置包是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。常用内置包:1、fmt,可实现格...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作