GO代码如何建立基本工程目录(第五天)

本文详细介绍了Go语言项目的基本目录结构,包括src、pkg和bin目录的用途,以及源文件的分类。强调了包管理的重要性,指出一个项目中src目录下按包组织源文件,pkg目录存储编译后的包文件,bin目录存放可执行文件。同时,文中提到了Go环境变量GOPATH的设置以及可能出现的文件加载问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go语言开发环境要设置环境变量 GOPATH,构建一个项目,就需要将这个项目的目录添加到 GOPATH 中,多个项目之间可以使用;分隔

目录结构

一个Go语言项目的目录一般包含以下三个子目录:
src 目录:放置项目和库的源文件;
pkg 目录:放置编译后生成的包/库的归档文件;
bin 目录:放置编译后生成的可执行文件

src 目录

  • 用于以包(package)的形式组织并存放 Go 源文件,这里的包与 src 下的每个子目录是一一对应。例如,若一个源文件被声明属于 log 包,那么它就应当保存在 src/log 目录中。一般来说,一个文件夹为一个包,一个包中中只能出现一个package main
    如果src 目录下存放 Go 源文件,就只能声明该源文件属于 main 包了
  • 包是Go语言管理代码的重要机制,其作用类似于Java中的 package 和 C/C++ 的头文件。Go 源文件中第一段有效代码必须是package <包名> 的形式,如 package hello。
    另外需要注意的是,Go语言会把通过go get 命令获取到的库源文件下载到 src 目录下对应的文件夹当中。

pkg 目录

  • 用于存放通过go install 命令安装某个包后的归档文件。归档文件是指那些名称以“.a”结尾的文件。
  • 该目录与 GOROOT 目录(也就是Go语言的安装目录)下的 pkg 目录功能类似,区别在于这里的 pkg 目录专门用来存放项目代码的归档文件。
  • 编译和安装项目代码的过程一般会以代码包为单位进行,比如 log 包被编译安装后,将生成一个名为 log.a 的归档文件,并存放在当前项目的 pkg 目录下。

bin 目录

在通过go install 命令完成安装后,保存由 Go 命令源文件生成的可执行文件。在类 Unix 操作系统下,这个可执行文件的名称与命令源文件的文件名相同。而在 Windows 操作系统下,这个可执行文件的名称则是命令源文件的文件名加 .exe 后缀。

源文件

  • 命令源文件:如果一个 Go 源文件被声明属于 main 包,并且该文件中包含 main 函数,则它就是命令源码文件。命令源文件属于程序的入口,可以通过Go语言的go run 命令运行或者通过go build 命令生成可执行文件。

  • 库源文件:库源文件则是指存在于某个包中的普通源文件,并且库源文件中不包含 main 函数。

  • 同一个目录下不能定义不同的package,应该分为两个不同的目录才可以。在go中,则是任何一个package中,唯一一个带有main方法的go文件,也就是说,一个package下,只能有一个main方法,不管是在那个文件中,但是只能有一个,这个package是按照文件夹区分的,举个栗子:

在这里插入图片描述
main下的Test和util两个go中只能有一个go文件中有main方法,如果这两个文件都包含main方法,就会报错,
main下的basic目录下,有var.go,这个文件夹下也可以有一个main方法

实战总结:

出现一些文件加载不了的问题,可能是工程目录的环境变量设置的问题
1.第一种,windows的窗口进行设置
在这里插入图片描述第二种,命令进行设置

::关闭回显
@echo off
::设置要永久加入到path环境变量中的路径
setx GOROOT "%GOROOT%D:\go"
setx GOPATH "%GOPATH%D:\go\WORK_SPACE"
setx GOBIN "%GOBIN%D:\go\WORK_SPACE\bin"
exit

第一个代码,输出九九乘法表

package main

import "fmt"

func main() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d * %d = %d\t", j, i, j*i)
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值