Golang包和项目构成

简介: 工作目录先来说说Golang的工作目录,安装好Golang后,需要做的一件事情就是设置工作目录,所有的项目、工具、第三方包会存放到工作目录中。默认情况下工作目录是用户目录的go文件夹。

工作目录

先来说说Golang的工作目录,安装好Golang后,需要做的一件事情就是设置工作目录,所有的项目、工具、第三方包会存放到工作目录中。默认情况下工作目录是用户目录的go文件夹。我们可以利用环境变量GOPATH来更改Golang工作目录的位置。

工作目录的结构是如下这样的。bin文件夹存放项目会使用到的各种工具;pkc存放着项目所需的各种包所需的库文件;src存放着项目的源代码。如果使用了第三方库,那么第三方库也会存放到工作目录中。

bin/
pkg/
src/

Go命令

下面来介绍一下Go命令,它将是我们使用的主要命令。如果需要查看帮助,可以直接输入go,终端会列出所有命令和简短的提示。我简单地翻译了一下帮助信息。

PS C:\Users\asddf> go
Go is a tool for managing Go source code.

Usage:

        go command [arguments]

The commands are:

        build       编译包和依赖
        clean       移除对象文件
        doc         显示宝或符号的文档信息
        env         打印go环境信息
        bug         提交bug信息
        fix         在包上运行go tool fix
        fmt         在包源代码上运行格式化工具
        generate    处理源代码并生成go文件
        get         下载和安装包和依赖
        install     编译并安装包和依赖
        list        列出包
        run         编译和运行go程序
        test        测试包
        tool        运行指定的go工具
        version     打印go版本
        vet         在包上运行go工具审查

运行项目

单个文件

如果只需要运行单个文件,可以简单的使用go run命令。比方说,下面的代码文件是hello_world.go,那么只需要简单运行go run hello_world.go即可。这里提一下,可以运行的文件的包必须是main,而且有一个main函数。

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World")
}

复杂项目

如果我们正在编写一个比较复杂的项目,这个项目有很多个包,那么就不能随意放置项目了。为了让项目中的包可以被访问,项目必须放置在Go的工作目录中,更具体说就是工作目录的src中。

举个例子,我的项目可以放置到go_workspace\src\yitian\golang-study\golang-programming。这里为了区分不同的第三方包,需要不同的目录层次,例如大部分Github上的第三方库,目录层次都是github.com/XXX这样的。

包这个概念我放到最后来说,因为我不知道怎么说。不过如果学过Java的话,应该很容易理解包这个概念,反正都是用来给代码分类的。需要注意一点,Java的包用来组织代码,所以Java的包名必须是唯一的,这通过包前面的一长串限定名abc.xyz.XXX来办到。

和Java不同的是,Golang中的包可以重名,所以为了区分不同的包,需要在引用的时候添加路径。就拿刚才举的项目例子,假如go_workspace\src\yitian\golang-study\golang-programming下有一个hello包,那么在其他项目中要引用这个包就需要使用名称yitian/golang-study/golang-programming/hello

相关文章
|
6月前
|
Go 开发者
Go语言包的组织与导入 -《Go语言实战指南》
本章详细介绍了Go语言中的包(Package)概念及其使用方法。包是实现代码模块化、复用性和可维护性的核心单位,内容涵盖包的基本定义、命名规则、组织结构以及导入方式。通过示例说明了如何创建和调用包,并深入讲解了`go.mod`文件对包路径的管理。此外,还提供了多种导入技巧,如别名导入、匿名导入等,帮助开发者优化代码结构与可读性。最后以表格形式总结了关键点,便于快速回顾和应用。
284 61
|
2月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
164 4
|
5月前
|
JSON 中间件 Go
Go语言实战指南 —— Go中的反射机制:reflect 包使用
Go语言中的反射机制通过`reflect`包实现,允许程序在运行时动态检查变量类型、获取或设置值、调用方法等。它适用于初中级开发者深入理解Go的动态能力,帮助构建通用工具、中间件和ORM系统等。
315 63
|
5月前
|
设计模式 Kubernetes Go
​​什么是Golang项目的“主包精简,逻辑外置”?​
“主包精简,逻辑外置”是Go语言项目的一种设计原则,强调将程序入口保持简单,核心逻辑拆分至其他包,以提升代码可维护性、可测试性及扩展性,适用于CLI工具、Web服务等场景。
142 7
|
4月前
|
缓存 监控 安全
告别缓存击穿!Go 语言中的防并发神器:singleflight 包深度解析
在高并发场景中,多个请求同时访问同一资源易导致缓存击穿、数据库压力过大。Go 语言提供的 `singleflight` 包可将相同 key 的请求合并,仅执行一次实际操作,其余请求共享结果,有效降低系统负载。本文详解其原理、实现及典型应用场景,并附示例代码,助你掌握高并发优化技巧。
343 0
|
7月前
|
Go 持续交付 开发者
Go语言包与模块(module)的基本使用-《Go语言实战指南》
本章深入讲解Go语言中的包(Package)和模块(Module)概念。包是代码组织的最小单位,每个`.go`文件属于一个包,通过`import`实现复用;主程序包需命名为`main`。模块是Go 1.11引入的依赖管理机制,支持自动版本管理和私有/远程仓库,无需依赖GOPATH。通过实际示例,如自定义包`mathutil`和第三方模块`gin`的引入,展示其使用方法。常用命令包括`go mod init`、`go mod tidy`等,帮助开发者高效管理项目依赖。最后总结,包负责功能划分,模块实现现代化依赖管理,提升团队协作效率。
299 15
|
Linux Go iOS开发
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
本文介绍了如何在 VSCode 中禁用点击 Go 包名时自动打开浏览器跳转到 pkg.go.dev 的功能。通过将 gopls 的 `ui.navigation.importShortcut` 设置为 "Definition",可以实现仅跳转到定义处而不打开链接。具体操作步骤包括:打开设置、搜索 gopls、编辑 settings.json 文件并保存更改,最后重启 VSCode 使设置生效。
478 8
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
|
11月前
|
Go 数据库
Go语言中的包(package)是如何组织的?
在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
387 11
|
Go 索引
go语言使用strings包
go语言使用strings包
279 3
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
188 3

推荐镜像

更多