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 各类程序开发语言概述, 点击查看大图:
随机推荐
- HTML常用提交按钮
1. 标签=元素 disabled(不可操作) readonly(只读) placeholder(提示文本) autofocus(自动获焦) autocomplete=”on(默认.规定启用自动 ...
- 设计模式---对象性能模式之单例模式(Singleton)
前提:“对象性能”模式 面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定的代价.对于通常情况来讲,面向对象的成本大都可以忽略不计.但是某些情况,面向对象所带来的成本必须谨慎处理. 前面是 ...
- python 第一类对象 闭包 迭代器
########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...
- Sqlcmd使用详解
Sqlcmd实用工具,可以输入 TRANSACT-SQL 语句. 系统过程和脚本文件,通过各种可用模式: 通过命令提示符. 在中查询编辑器在 SQLCMD 模式下. 在 Windows 脚本文件. 在 ...
- Oracle的to_char()函数使用
(1)用作日期转换: to_char(date,'格式'); select to_date('2005-01-01 ','yyyy-MM-dd') from dual; select to_char( ...
- freemarker迭代list、map等常规操作,将数据放到模板中
转自:https://blog.csdn.net/wickedvalley/article/details/65937189 一.controller开始准备模型.数据1.po类 package co ...
- java中获取request与response对象的方法
Java 获取Request,Response对象方法 第一种.参数 @RequestMapping("/test") @ResponseBody public void sa ...
- php中inset 和 和 empty 的区别
inset函数 用途:检测变量是否设置判断:检测变量是否设置,并且不是 NULL.如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 ...
- 在 CentOS6 上安装 Zabbix2.4 Server
#!/bin/bash # # .配置无人值守的安装,定义安装过程中需要用到的一些信息 # mysql_root_pw=root_pw mysql_zabbix_pw=zabbix_pw DBPass ...
- mvn项目压缩打包
通常情况下,maven打包结果为jar或war包.如果需要一并打包配置文件等参数,通过resources配置指定需要打包的文件参数,如下示例: <project> ... <!-- ...