代码改变世界

搭建Go语言开发环境-优化篇

2012-12-08 14:53  Danny.tian  阅读(3814)  评论(0编辑  收藏  举报

在上篇搭建Go语言开发环境-基础篇中提到的Go环境变量设置准备在这篇文章中进行一下优化已增加开发效率

之前的环境变量

export GOROOT=$HOME/go
export GOBIN=$GOROOT/bin
export GOARCH=amd64
export GOOS=linux
export PATH=$GOBIN:$PATH
export GOPATH=$HOME/goprograms

修改后的环境变量~/.bashrc文件变成了如下这样:

export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH

为什么要删除GOBIN GOARCH GOOS呢??

因为系统默认都已经设置好这些变量了,不再需要配置了,除非要在linux下面编译出windows下的可执行文件才需要配置这些变量,我们同样也删除了GOPATH变量,这样Go就不能正常工作了,我们不在这里配置GOPATH的原因主要是避免每次建立新项目都要去改这个参数而是通过make文件的形式来变相满足Go环境的需求,新增加的make文件内容如下:

#!/usr/bin/env bash

if [ ! -f make ]; then
echo 'make must be run within its container folder' 1>&2
exit 1
fi

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

gofmt -tabs=false -tabwidth=4 -w src
go install test
export GOPATH="$OLDGOPATH"
echo 'finished'

运行这个make文件时,其实就是通过脚本的形式去动态改变GOPATH来编译程序,还有一点要注意的就是当运行go install test时Go编译器会去$GOPATH/src/test寻找main文件,运行成功后会生成bin、pkg文件夹,bin文件夹里面包含可执行文件test,如果之前设置了$GOBIN变量的话这个test可执行文件会被生成在$GOBIN所定义的目录下,我们按照下图所示建立一个测试项目,试一下这个make文件

在src/config下建立config.go文件:

package config

func LoadConfig() {

}

在src/test下建立main.go文件

package main

import (
    "config"
    "fmt"
)

func main() {
    config.LoadConfig()
    fmt.Println("Hello, GO!")
}

我们现在运行 ./make 会得到如下目录结构

这时可以看到在bin下面已经生成test文件了,大功告成,以后如果新增加项目也只需把这个make文件复制过去改一下GOPATH路径就ok了,不用每次都修改~/.bashrc了

 

特别感谢 @polaris 给予的帮助和他的文章