0x00

一般语言没有规定项目目录结构,但golang有规定,这样可以保证一致性。

0x01

Golang提供两个关键路径:

  • GOROOT指向GO的安装路径
  • GOPATH指向项目路径

一般GO安装好后GOROOT会自动指向安装路径,所以一般不需要动。除非你安装了几个不同版本的GO,GOROOT设置为指定版本的路径即可。

GOPATH指向的项目目录目录结构:

项目目录    <-GOPATH指向的路径
├─bin       <-编译后的可以执行文件存放的位置
├─pkg       <-编译的中间文件存放位置
└─src       <-项目源代码存放位置
    ├─项目          <-项目源代码存放位置
    └─vendor        <-第三方开源代码存放位置

一般只需要创建srcbin pkg编译时会自动创建。

//指定GOPATH:

//windows
set GOPATH=项目目录路径

//Linux
export GOPATH=项目目录路径

假如项目名为test,使用go install test进行编译
其项目文件结构:

.
├─bin       <-bin目录会自动生成
|   └─test      <-编译后的可执行文件
└─src
    └─test
        ├─main.go       <-作为入口,必须命名为main.go
        └─Hello         <-文件夹名随意
            └─hello.go  <-文件名随意
//main.go
package main        //项目目录根目录和main.go的包名都为main

import (
    "test/Hello"    //指定目录
)
func main()  {
    Hello.Hello()   //调用Hello目录的hello.go中的Hello()函数
}
//hello.go
package Hello   //包名为该文件所在的目录名

import "fmt"

func Hello() {  //被跨目录调用的函数名首字母需要大写
    fmt.Println("hello!!!")
}

0x02

快捷编译脚本,将脚本放在项目目录根目录下(src同目录下):

//install.sh

#!/usr/bin/env bash
if [ ! -f install ]; then
echo 'install must be run within its container folder' 1>&2
exit 1
fi

CURDIR=`pwd`
OLDGOPATH="$GOPATH"
export GOPATH="$CURDIR"

gofmt -w src

go install test

export GOPATH="$OLDGOPATH"

echo 'finished'
//install.bat

@echo off

setlocal

if exist install.bat goto ok
echo install.bat must be run from its folder
goto end

: ok

set OLDGOPATH=%GOPATH%
set GOPATH=%~dp0

gofmt -w src

go install test

:end
echo finished
Last modification:October 24, 2019
如果觉得我的文章对你有用,请随意赞赏