最近项目中要用到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\n")
}

然后保存之后执行 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 := , len(r) - ; i < len(r)/; i, j = i + , j - {
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("\n!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

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

linux go环境安装和基本项目结构的更多相关文章

  1. Maven01 环境准备、maven项目结构、编译/测试/打包/清除、安装、

    0 前提准备 0.1 安装java开发环境 0.2 安装maven工具 1 maven项目基本结构 如图所示,整个maven项目有业务文件.测试文件.POM依赖管理文件:其实还有一个资源文件resou ...

  2. 免费开源的客服系统 Linux 服务器环境安装部署过程

    最近因为项目需要,要找一款在线客服系统集成在 APP 中使用,而且涉及到生意开单,客服系统必须稳定可靠.另外甲方要求,必须支持 Linux 服务器环境. 我们以 Ubuntu 18.04 为例把安装部 ...

  3. 无废话MVC入门教程一[概述、环境安装、创建项目]

    (转载) 本文目标 1.对MVC有初步的了解 2.能够在VS2010的基础之上安装MVC3的开发和运行环境 3.对MVC框架有概括性的认识 本文目录 1.什么是MVC 2.VS2010安装MVC3 3 ...

  4. Electron – 基础学习(1): 环境安装、创建项目及入门

    这几天到年底了,公司也没啥事,闲着就到处瞅瞅.记得上一家公司的时候用 Electron+ng1 写过项目,只是那个时候项目框架都是别人搭的,自己只负责写功能,对Electron没啥认识. 这几天想着反 ...

  5. 第四篇(1):企业常用Linux web环境安装配置(apache、php、mysql)

    上篇我们讲了基本的软件包管理和文件操作什么的,现在也要动手安装点有用的东西了吧! 本篇我会写出一个用yum安装apache.php.mysql的方法,最后再运行phpMyAdmin来管理数据库. 1. ...

  6. s11 day 101 python Linux环境安装 与路飞项目支付功能

    from django.conf.urls import urlfrom django.contrib import adminfrom app01 import viewsurlpatterns = ...

  7. ASP.NET Core Linux环境安装并运行项目

    原文地址:https://blog.csdn.net/u014368040/article/details/79192622 一 安装环境 1.  从微软官网下载 Linux版本的.NetCoreSd ...

  8. s11 day 102 python Linux环境安装 与路飞项目 微信平台接口

    1.微信公众号平台沙箱环境地址 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 二.结算中心业务 结算中心: -购物车,删 ...

  9. 001 开发环境搭建、安卓项目结构、R文件位置、asset目录创建

    1.安卓开发平台搭建 (1)下载SDK基础工具包(自己的百度云中) (2)将下载的安装包(android-sdk_r24.4.1-windows.zip)解压后,放到以下路径 C:\SoftAppli ...

随机推荐

  1. Fstring

    题目描述 一个只包含A,B,C三种字符的字符串,如果其中有连续的3个由A,B,C各一个组成,则称为Fstring. 例如:BAACAACCBAAA就是,而AABBCCAABB则不是. 你的任务就是计算 ...

  2. POJ1459 Power Network 网络流 最大流

    原文链接http://www.cnblogs.com/zhouzhendong/p/8326021.html 题目传送门 - POJ1459 题意概括 多组数据. 对于每一组数据,首先一个数n,表示有 ...

  3. 上传前端webuploader

    多文件上传时,是有几个文件调用几次方法. 可以设置为单线程.

  4. Java内存管理-一文掌握虚拟机创建对象的秘密(九)

    勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! [福利]JVM系列学习资源无套路赠送 回顾一下: 本文是接着上一篇内容:Java内存管 ...

  5. Intellij IDEA实现SpringBoot项目多端口启动

    前言 有时候使用springboot项目时遇到这样一种情况,用一个项目需要复制很多遍进行测试,除了端口号不同以外,没有任何不同.这时我们强大的Intellij IDEA就能替我们实现. 实现方法 第一 ...

  6. 大数据环境完全分布式搭建hbase-0.96.2-hadoop2

    1.上传hbase安装包 2.解压 3.配置hbase集群,要修改3个文件 (首先zookeeper集群已经安装好了 并且启动 hadoop启动) 注意:要把hadoop的hdfs-site.xml和 ...

  7. ES搜索社区

    好问题 1.比如我要索引的条目为“33分钟侦探”,我想在用户输入“3”.“33”.“三三”.“三十三”.“三十三分钟”等的情况下都命中该条目,请问有没有什么好的方式实现? PS:使用的是ansj分词器 ...

  8. Spring Boot基础讲解

    Spring Boot Spring Boot 是由Pivotal团队提供的框架,它并不是一个全新的框架,而是将已有的 Spring 组件整合起来,设计目的是用来简化新Spring应用的初始搭建以及开 ...

  9. ReactNative用指定的设备/模拟器运行项目

    命令行中React native项目目录下键入react-native run-ios会启动iOS模拟器, 默认是使用iPhone6,如果想要试用其他版本的模拟器则需要在react-native ru ...

  10. python正则表达式(一)

    ---恢复内容开始--- 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计 ...