Go语言程序开发初涉
由于工作原因,现在开始学习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语言程序开发初涉的更多相关文章
- linux系统--C语言程序开发的基本步骤(包含gcc的基本步骤)
1.使用vi或者vim编写程序文件 2.使用gcc把所有的源文件翻译成计算机认识的格式(编译) 3.使用./a.out作为命令执行得到的可执行文件 gcc编译器的工作步骤: 1.处理所有的预处理指令 ...
- C语言简介与第一个C语言程序
一.C语言产生的背景 C语言的出现与操作系统Unix是分不开的.Unix是1969年由美国贝尔实验室的K. Thompson和D. M. Ritchie两人用汇编语言编写,它存在许多不足,因此,需要一 ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- C语言第一节 C语言程序与开发工具
开发工具的选择 可以用来写代码的工具:记事本.UltraEdit.Vim.Xcode等 选择Xcode的原因:苹果官方提供的开发利器.简化开发过程.有高亮显示功能 使用Xcode新建一个C程序的源代码 ...
- IOS开发--C语言入门--如何结合Terminal和Vim开发C语言程序
一直以来都想着挤出时间,记录开发之路的点点滴滴(现在记录已成回忆),和大家一起分享,开发人员总是在沟通和相互学习中提高自身的能力.路过的大神也好初学者也罢,若发现文章中又观点不对的,还望大家指出. 现 ...
- C语言入门(2)——安装VS2013开发环境并编写第一个C语言程序
在C语言入门系列中,我们使用Visual studio 2013 Professional作为开发工具.本篇详细介绍如何安装Visualstudio 2013 Professional并写出我们第一个 ...
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- 微信小程序开发语言的选择
微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Shee ...
- 【ZZ】各类程序开发语言概述 | 菜鸟教程
http://www.runoob.com/w3cnote/programming-intro.html 各类程序开发语言概述, 点击查看大图:
随机推荐
- Pandas透视表(pivot_table)详解
介绍 也许大多数人都有在Excel中使用数据透视表的经历,其实Pandas也提供了一个类似的功能,名为pivot_table.虽然pivot_table非常有用,但是我发现为了格式化输出我所需要的内容 ...
- Spring_事务管理
转自:https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html 事务管理是应用系统 ...
- centos之Too many open files问题-修改linux最大文件句柄数
linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [ ...
- 5、MyBatis-parameterType 入参封装 Map 流程
以如下入参为例,MyBatis 版本为 3.5.0 public MyUser selectMyUserIdAndAge(Integer id, @Param("user") My ...
- C++回顾day01---<const常量重点>
一:定义常整型数 const int a;(或者int const a;) 不涉及指针 不可改变值(也不可通过指针修改) 二:定义一个指向常整型数的指针 const int* c; 可改指针指向 ...
- SqlServer中的事务使用
一.事务的概念和特点 事务(transaction)是恢复和并发控制的基本单位. 事务的特点 原子性:事务是一个工作单元,要都成功,要么的失败 例子:A付款给B,A余额-100,B余额+100,只能都 ...
- 批量获取oracle的表和表字段注释【原】
批量获取oracle的表和表字段注释 --用户表注释表 SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME LIKE 'WEB_ISC_%'; --显示指 ...
- hdu 6441 (费马大定理+勾股数 数学)
题意是给定 n 和 a,问是否存在正整数 b,c 满足:a^n + b^n == c^n.输出 b c,若不存在满足条件的 b,c,输出 -1 -1. 当 n > 2 时,由费马大定理,不存在 ...
- Shell编程(八)每隔N分钟执行某脚本
sudo crontab -e
- 查看swap占用情况
查看swap被占用的情况 #!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/ ...