由于工作原因,现在开始学习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. HTML常用提交按钮

    1. 标签=元素 disabled(不可操作)  readonly(只读)  placeholder(提示文本) autofocus(自动获焦)  autocomplete=”on(默认.规定启用自动 ...

  2. 设计模式---对象性能模式之单例模式(Singleton)

    前提:“对象性能”模式  面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价.对于通常情况来讲,面向对象的成本大都可以忽略不计.但是某些情况,面向对象所带来的成本必须谨慎处理. 前面是 ...

  3. python 第一类对象 闭包 迭代器

    ########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...

  4. Sqlcmd使用详解

    Sqlcmd实用工具,可以输入 TRANSACT-SQL 语句. 系统过程和脚本文件,通过各种可用模式: 通过命令提示符. 在中查询编辑器在 SQLCMD 模式下. 在 Windows 脚本文件. 在 ...

  5. Oracle的to_char()函数使用

    (1)用作日期转换: to_char(date,'格式'); select to_date('2005-01-01 ','yyyy-MM-dd') from dual; select to_char( ...

  6. freemarker迭代list、map等常规操作,将数据放到模板中

    转自:https://blog.csdn.net/wickedvalley/article/details/65937189 一.controller开始准备模型.数据1.po类 package co ...

  7. java中获取request与response对象的方法

    Java 获取Request,Response对象方法   第一种.参数 @RequestMapping("/test") @ResponseBody public void sa ...

  8. php中inset 和 和 empty 的区别

    inset函数 用途:检测变量是否设置判断:检测变量是否设置,并且不是 NULL.如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 ...

  9. 在 CentOS6 上安装 Zabbix2.4 Server

    #!/bin/bash # # .配置无人值守的安装,定义安装过程中需要用到的一些信息 # mysql_root_pw=root_pw mysql_zabbix_pw=zabbix_pw DBPass ...

  10. mvn项目压缩打包

    通常情况下,maven打包结果为jar或war包.如果需要一并打包配置文件等参数,通过resources配置指定需要打包的文件参数,如下示例: <project> ... <!-- ...