• linux go环境安装和基本项目结构


        最近项目中要用到Go语言,所以简单总结一下安装和配置,Go这个语言本身就限定了很多规范,比如项目设置,编程风格等,开发中就不需要再因为各种规范问题纠结了,直接用官方规定的能避免很多坑,下面直接切正题,go一般参考两个网站,官网和中文网,网址如下:

        官网:https://golang.org

        中文网:https://studygolang.com/

        中文文档:https://go-zh.org/doc/

        另外其实中文网的更新目前也是比较快的

        1. 安装

        第一步首先下载安装包,下载地址是:https://golang.org/dl/,或者中文网地址:https://studygolang.com/dl,比较了一下两个go最新版本都是一样的,目前是1.10.3,根据自己的计算机系统下载对应的版本,我这里是linux 64位,所以下载go1.10.3.linux-amd64.tar.gz这个包,下载之后可以解压安装:

    tar -xvzf go1.10.3.linux-amd64.tar.gz

        解压之后直接当前目录下会有一个go目录,直接执行 mv go /usr/local ,这样就将go安装到的/usr/local/go下,现在只需要最后一步配置环境变量就可以了:

    export PATH=$PATH:/usr/local/go/bin

        可以加到/etc/profile或者~/.bash_profile然后source即可,现在执行 go version 查看版本号如下:

        

        现在go就彻底安装成功了,另外注意官方假定go安装在/usr/local/go下,如果想安装到其他目录也是可以的,比如/abc/go,但是一定要配置GOROOT环境变量,如下:

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

        这样go也可以安装成功,如果是默认的目录,则不需要设置GOROOT

        2. hello world

        第一步先写一个最简单的hello world程序,在任意目录下新建hello.go,内容如下:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Printf("hello world
    ")
    }

         然后保存之后执行 go run hello.go 就可以直接执行了,或者先执行编译 go build hello.go 然后生成hello可执行文件,就和c/c++编译一样,无需安装go环境即可执行:

        

        3. 项目结构

        上面只是go最简单的示例代码,但是在实际开发中会包含大量的项目封装和第三方模块,就需要设置项目结构进行管理,当然这个go已经规定好了,下面和文档上写的一样一步一步建立一个简单的项目,

        首先建立工作目录: mkdir /root/go_work ,然后配置GOPATH环境变量,这也是开发go唯一需要配置的环境变量,如下:

    export GOPATH=/root/go_work
    export PATH=$PATH:$GOPATH/bin

        然后进入/root/go_work,项目目录下面一般需要3个目录:bin, pkg, src,看意思懂了一大半,待会会详细说到.

        现在项目下面是空的,手动建立源码目录 mkdir src ,然后在下面继续建立用户库目录:

    mkdir -p github.com/user
    mkdir github.com/user/hello

        大部分第三方库都是通过github下载的,所以第三方源码目录一般是github,然后将刚才写的hello.go移动到github.com/user/hello中,现在可以执行安装命令: go install github.com/user/hello 注意是在任何目录都可以执行这个命令,因为go会自动去GOPATH下的源码目录中寻找,会把对应的目录下所有的源代码都进行编译,执行完成没有任何输出表示成功,然后回到go_work下会看到生成了bin目录,这里面的就是编译好的可执行文件.

        然后尝试编写一个第三方模块,实现字符串反转,执行 mkdir github.com/user/string_util 然后新建文件reverse.go,代码如下:

    package string_util
    
    func Reverse(s string) string {
        r := []rune(s)
        for i, j := 0, len(r) - 1; i < len(r)/2; i, j = i + 1, j - 1 {
            r[i], r[j] = r[j], r[i]
        }
        return string(r)
    }

        然后保存,执行安装 go install github.com/user/string_util ,其实在执行前可以先执行 go build github.com/user/string_util 没有报错说明成功,但是不会生成任何文件,然后再执行install,现在看到go_work目录下会多出pkg目录,这个目录就是第三方的库,也就是不含有main函数的代码都会编译到这里面;然后编写主调函数调用这个封装的函数,在源码目录下新建call目录,然后编写util_call.go,代码如下:

    package main
    import (
        "fmt"
        "github.com/user/string_util"
    )
    
    func main() {
        fmt.Printf(string_util.Reverse("
    !oG, olleH"))
    }

        然后保存执行安装 go install call 或者在代码所在目录直接执行 go install 均可,这时候在bin目录下就会生成call可执行文件,执行如下:

        

        现在我们对go的项目结构就基本上了解清楚了,然后我们总体看一下项目结构:

         

        这和网上教程写的是基本一样的

        总结:

        1. go的开发环境仅依赖GOPATH环境变量和go安装目录下的系统包.

        2. go的所有源码应该在src下按照目录结构存放,按照标准的安装方式编译项目.

        3. 所有包含main函数的源代码,头部package都应该为main,其余的模块比如github.com/user/stringutil下面的源码头部应该为package stringutil,即取目录结构的最后一层.

        上面就是go的基本环境安装和开发配置,继续入门或进阶可以参考以下链接:

        1. Go语言之旅,在线学习:https://tour.go-zh.org/

        2. 语言规范:https://go-zh.org/ref/spec

        3. 实效Go编程:https://go-zh.org/doc/effective_go.html

        最后就是总的文档,多多阅读.

  • 相关阅读:
    学习MSMQ笔记
    swfobject 2.0 使用(转)
    发现博客园的一个小问题
    4月10日
    NHibernate的一点思考
    最新手机号码正则表达式
    如何在页面完美显示版权符号(转)
    OpenGL由已知控制点绘制模拟曲面地形
    android自定义view[控件重用]时出现“No resource identifier found for attribute *** in package *** ”
    基于ARM的模拟器
  • 原文地址:https://www.cnblogs.com/freeweb/p/9437519.html
Copyright © 2020-2023  润新知