由于工作原因,现在开始学习Go语言。这也是本人第一篇关于Go的博客。本文将通过一些基本概念的说明和实际案例,使得大家能快速对Go程序的开发有个了解。

一. Go的安装 :

    在 https://www.studygolang.com/dl 上可下载到go的各个平台的安装程序,安装过程在此忽略,安装后,在{Go的主目录}后称GOROOT下有个bin目录,下面有个go的可执行程序,这个程序我们可称之为 go tool。这个go tool在安装时一般会被配置到PATH的环境变量中。我们通过在控制台上执行 go version命令可以验证安装是否成功,如图:

二. GOPATH环境变量

  GOPATH 环境变量用于指定这样一些目录:除 $GOROOT 之外的包含 Go 项目源代码和二进制文件的目录。go install 和 go 工具会用到 GOPATH:作为编译后二进制的存放目的地 和 import 包时的搜索路径。

  官方推荐GOPATH环境变量应指向我们代码的工作空间目录,GOPATH可以指向多个目录,在Window上用 ;号间隔,在UNIX上用:号间隔 。这个环境变量如果不配置,Go会提供一个默认的,指向操作系统的当前用户的主目录,例如在UNIX上是$HOME/go,在Window上是 C:\Users\YourName\go  。

  但要注意GOPATH一定不要指向GOROOT 目录。

  通过在控制台上执行go env GOPATH命令我们可以查当前的GOPATH设置。

三. 代码的工作空间(后称workspace)

      上面在讲GOPATH时提到了workspace这个概念,这个大家不会感到陌生,因为在其他语言例如JAVA中也都有这个概念,简单来说就是用来管理我们的代码项目的一个目录集合。Go语言并没有强制要使用一定的工作空间和项目结构。然而,保持良好的workspace和文件结构,对于管理源代码和发布程序都是非常有帮助的。对于大型的go语言项目,workspace则是一定要的。但在Go语言中会对这个workspace目录有些特定的要求和不同于JAVA  workspace的一些作用,如下:

1.Go程序员通常将他们所有的Go代码保存在一个workspace中。

  2.Go的workspace中会包含许多版本控制存储库(例如Git) 。注意,这与其他语言的编程环境不同,在其他编程环境中,workspace只是会与版本控制存储库紧密相联系。

  3.Go的workspace是一个目录层次结构,其中的根目录有三个目录:   

    src 目录:包含Go的源码文件, 在这个目录会放置我们各个项目的源码,go的项目都是放在不同的称之为包目录的目录下的,在每个包目录中的有一个或多个Go源文件。

    pkg 目录:包含包对象文件,通过go install命令编译源码生成

    bin目录:包含可执行命令,通过go install命令编译源码生成

四. 工作空间下源代码的管理

workspace下的src目录下是Go用来放置源码文件的,但这些文件在src目录下如何组织也是有讲究的。在软件开发设计上经常会提到一个名词 “最佳实践” ,Go最语言的设计者也为指出了一种源代码管理的“最佳实践”:

  1. 首先Go希望我们的代码的命名空间与版本仓库能建立关系,这样Go就能方便的将我们的代码与版本仓库中的代码建立映射关系 ,假设我们使用github做为我们的版本仓库,那么我们在 {worspace}/src目录下,就应该按创建github.com目录 ,然后再在该目录下创建 {我的github帐号}的目录。Go语言本身就实现了通过go get  {github项目url} 命令会将github项目的代码直接下载放在workspace

  2. 我们的所有项目代码都应放在{我的github帐号}的目录之下。

3. 出现在{workspace}\src目录之下的目录在Go语言中称之为import path ,这个是用来供不同的 .go 文件在引用其他包中的go代码或函数时需要用到的,在这一点和Java语言有所不同,Java语言在引用外部包的代码时一般就import  xxxpackage 就可以,但在Go语言中需要  import  {import path}/xxxpackage才可以。

总结,再来张图加深下印象:

五.Go的IDE工具介绍

      可以到https://www.jetbrains.com/go/download网站下载GoLand,具体的用法将在下一篇博客中结合实例进行说明。

Go语言程序开发初涉的更多相关文章

  1. linux系统--C语言程序开发的基本步骤(包含gcc的基本步骤)

    1.使用vi或者vim编写程序文件 2.使用gcc把所有的源文件翻译成计算机认识的格式(编译) 3.使用./a.out作为命令执行得到的可执行文件 gcc编译器的工作步骤: 1.处理所有的预处理指令 ...

  2. C语言简介与第一个C语言程序

    一.C语言产生的背景 C语言的出现与操作系统Unix是分不开的.Unix是1969年由美国贝尔实验室的K. Thompson和D. M. Ritchie两人用汇编语言编写,它存在许多不足,因此,需要一 ...

  3. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  4. C语言第一节 C语言程序与开发工具

    开发工具的选择 可以用来写代码的工具:记事本.UltraEdit.Vim.Xcode等 选择Xcode的原因:苹果官方提供的开发利器.简化开发过程.有高亮显示功能 使用Xcode新建一个C程序的源代码 ...

  5. IOS开发--C语言入门--如何结合Terminal和Vim开发C语言程序

    一直以来都想着挤出时间,记录开发之路的点点滴滴(现在记录已成回忆),和大家一起分享,开发人员总是在沟通和相互学习中提高自身的能力.路过的大神也好初学者也罢,若发现文章中又观点不对的,还望大家指出. 现 ...

  6. C语言入门(2)——安装VS2013开发环境并编写第一个C语言程序

    在C语言入门系列中,我们使用Visual studio 2013 Professional作为开发工具.本篇详细介绍如何安装Visualstudio 2013 Professional并写出我们第一个 ...

  7. Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序

    Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...

  8. 微信小程序开发语言的选择

    微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Shee ...

  9. 【ZZ】各类程序开发语言概述 | 菜鸟教程

    http://www.runoob.com/w3cnote/programming-intro.html 各类程序开发语言概述, 点击查看大图:

随机推荐

  1. zookeeper kafka集群

    一.部署zookeeper集群 三台机器上执行相同的操作 mkdir -p /data/zookeeper cd zookeeper-3.4.6 cp zoo_sample.cfg zoo.cfg [ ...

  2. iptables之NAT端口转发设置

    背景:服务器A:103.110.114.8/192.168.1.8,有外网ip,是IDC的一台服务器服务器B:192.168.1.150,没有外网ip,A服务器是它的宿主机,能相互ping通服务器C: ...

  3. SpringBoot笔记十一:html通过Ajax获取后端数据

    我们知道在Java Web中,前端的JSP可以使用EL表达式来获取Servlet传过来的数据Spring Boot中也有Thymeleaf模板可以使用th: text="${XXX}&quo ...

  4. oracle中查看所有表和字段以及表注释字段注释

    获取表:select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 selec ...

  5. Hbase记录-zookeeper部署

    #官网下载二进制包解压到/usr/app下,配置/etc/profile: export ZOOKEEPER_HOME=/usr/app/zookeeper export PATH=$PATH:$ZO ...

  6. 【leetcode-89 动态规划】 格雷编码

    ( 中等难度题(×) -背答案题(√) ) 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 ...

  7. HDU - 5119 Happy Matt Friends(dp)

    题目链接 题意:n个数,你可以从中选一些数,也可以不选,选出来的元素的异或和大于m时,则称满足情况.问满足情况的方案数为多少. 分析:本来以为是用什么特殊的数据结构来操作,没想到是dp,还好队友很强. ...

  8. PHP7 学习笔记(十二)Stream 函数详解

    官方:http://php.net/manual/zh/ref.stream.php Stream_*系列函数 PHP中对流的描述如下:每一种流都实现了一个包装器(wrapper),包装器包含一些额外 ...

  9. 修改ScriptBundle 生成顺序

    ScriptBundle 一般用法 C#的代码如下: bundles.Add(new ScriptBundle("~/bundles/jqueryval") .Include(&q ...

  10. python中print和input的底层实现

    print print的底层通过sys.stdout.write() 实现 import sys print('hello') print('world') print(520) sys.stdout ...