前面的文章中记录了安装 golang 和配置开发环境,本文将学习的 go 命令行命令以及使用场景。

查看可用命令

直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:

  • build: 编译包和依赖
  • clean: 移除对象文件
  • doc: 显示包或者符号的文档
  • env: 打印go的环境信息
  • bug: 启动错误报告
  • fix: 运行go tool fix
  • fmt: 运行gofmt进行格式化
  • generate: 从processing source生成go文件
  • get: 下载并安装包和依赖
  • install: 编译并安装包和依赖
  • list: 列出包
  • run: 编译并运行go程序
  • test: 运行测试
  • tool: 运行go提供的工具
  • version: 显示go的版本
  • vet: 运行go tool vet

命令的使用方式为: go command [args], 除此之外,可以使用go help <command> 来显示指定命令的更多帮助信息。

在运行 go help 时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息:

  • c: Go和c的相互调用
  • buildmode: 构建模式的描述
  • filetype: 文件类型
  • gopath: GOPATH环境变量
  • environment: 环境变量
  • importpath: 导入路径语法
  • packages: 包列表的描述
  • testflag: 测试符号描述
  • testfunc: 测试函数描述

同样使用 go help <topic>来查看这些概念的的信息。

build 和 run 命令

就像其他静态类型语言一样,要执行 go 程序,需要先编译,然后在执行产生的可执行文件。go build 命令就是用来编译 go程序生成可执行文件的。但并不是所以的 go 程序都可以编译生成可执行文件的, 要生成可执行文件,go程序需要满足两个条件:

  • 该go程序需要属于main包
  • 在main包中必须还得包含main函数

也就是说go程序的入口就是 main.main, 即main包下的main函数, 例子(hello.go):

package main

import "fmt"

func main() {
fmt.Println("Hello World!")
}

编译hello.go,然后运行可执行程序:

$ go run hello.go   # 将会生成可执行文件 hello
$ ./hello # 运行可执行文件
Hello World!

上面就是 go build 的基本用法,另外如果使用 go build 编译的不是一个可执行程序,而是一个包,那么将不会生成可执行文件。

go run 命令可以将上面两步并为一步执行(不会产生中间文件)。

$ go run hello.go
Hello World!

上面两个命令都是在开发中非常常用的。

此外 go clean 命令,可以用于将清除产生的可执行程序:

$ go clean    # 不加参数,可以删除当前目录下的所有可执行文件
$ go clean sourcefile.go # 会删除对应的可执行文件

fmt 和 doc 命令

go 语言有一个褒贬不一的特性,就是对格式的要求很严格,我是很喜欢这个特性的,因为可以保持代码的清晰一致,编译组合开发,并且go还提供了一个非常强大的工具来格式化代码,它就是 go fmt sourcefile.go, 不过通常其实不需要我们手动调用,各种编辑器都可以帮助我们自动完成格式化。

go doc 命令可以方便我们快速查看包文档,go doc package 命令将会在终端中打印出指定 package 的文档。

另外有一个与 go doc 命令相关的命令是 godoc, 可以通过它启动我们自己的文档服务器:

godoc -http=:8080

然后我们就可与在浏览器localhost:8080中查看go文档了

get 命令

这个命令同样也是很常用的,我们可以使用它来下载并安装第三方包, 使用方式:

go get src

从指定源上面下载或者更新指定的代码和依赖,并对他们进行编译和安装,例如我们想使用 beego 来开发web应用,我们首先就需要获取 beego:

go get github.com/astaxie/beego

这条命令将会自动下载安装 beego 以及它的依赖,然后我们就可以使用下面的方式使用:

package main

import "github.com/astaxie/beego"   # 这里需要使用 src 下的完整路径

func main() {
beego.Run()
}

install 命令

用来编译和安装go程序,我们可以将它与 build 命令对比:

install build
生成的可执行文件路径 工作目录下的bin目录下 当前目录下
可执行文件的名字 与源码所在目录同名 默认与源程序同名,可以使用-o选项指定
依赖 将依赖的包放到工作目录下的pkg文件夹下 -

test 命令

顾名思义,用来运行测试的命令,这种测试是以包为单位的。需要遵循一定规则:

  • 测试源文件是名称以“_test.go”为后缀的
  • 测试源文件内含若干测试函数的源码文件
  • 测试函数一般是以“Test”为名称前缀, 并有一个类型为“testing.T”的参数。

其他命令

其他命令不会经常使用,这里就不介绍了,真的用到的时候,直接使用 go help command 即可查看相关命令。

go语言学习-常用命令的更多相关文章

  1. go语言学习-常用命令(四)

    go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...

  2. linux系统学习(常用命令)

    今天调休,闲来无事,研究一下linux系统. Linux常用命令: 一:文件管理 ctrl+alt:在虚拟机与windows之间切换ctrl+g:进入linux输入模式 pwd:查看当前目录 ls:列 ...

  3. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

  4. Linux学习常用命令大全

    Linux知识大全 转载须说明出处,整理不易 一.常用的linux命令 1.2 ls 命令说明 1.3 ls 通配符的使用 2.切换目录cd命令 3.创建和删除文件操作 4.移动和拷贝文件 4.3.m ...

  5. 重学Python - Day 07 - python基础 -> linux命令行学习 -- 常用命令 一

    常用命令和使用方法如下: man man 命令 #可以查询命令的用法 cat 和 tac cat是正序显示文件内容 tac是倒叙显示文件内容 sort 对文件内容排序 uniq 忽略文件中重复行 hi ...

  6. Linux入门学习 常用命令

    cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...

  7. linux 学习 常用命令

     以下命令是本人的CentOS6.5系统 一.linux个目录的作用 #linux个目录的作用 /bin 所有用户都可使用的命令 /sbin 超级用户(root)可以使用的命令 /boot 系统目录建 ...

  8. Linux学习 -- 常用命令

    目录处理命令 ls mkdir rmdir pwd cd cp mv rm 文件处理命令 touch cat tac more less head tail 连接命令 ln 软连接 ln -s 类似于 ...

  9. git学习--常用命令

    1.初始化一个 Git 仓库 git init <directory> //参数 directory:作为Git仓库的目录 2.从Git 仓库中拷贝项目 git clone <rep ...

随机推荐

  1. 课程4:黑马程序员_spring2.5视频教程--视频列表

    \黑马程序员_spring2.5视频教程\01Struts相关基础理论介绍.mp4; \黑马程序员_spring2.5视频教程\02搭建struts开发环境.mp4; \黑马程序员_spring2.5 ...

  2. dbms_metadata.get_ddl的用法(DDL)

    dbms_metadata包中的get_ddl函数 --GET_DDL: Return the metadata for a single object as DDL. -- This interfa ...

  3. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(2)- 寄存器

    1. 前言 2. 指令运行与异常处理寄存器 ARM体系结构的寄存器分为两类: (1)系统控制和状态报告寄存器 (2)指令处理寄存器,如累加.异常处理 本部分将主要介绍如上第(2)部分的寄存器,分为AA ...

  4. AF_INET域与AF_UNIX域socket通信原理对比【转】

    转自:https://www.cnblogs.com/lfxiao/p/9672797.html 1.  AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程. 发送方.接收方依 ...

  5. V4L2学习记录【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637600.html V4L2学习记录 这个还没有分析完,先在这放着,防止电脑坏掉丢了,以后再完善 V4L ...

  6. Paramiko 操作远端时无法切换目录的问题

    最近在用Paramiko 开发一款远程测试调试框架,结果发现目录怎么都无法切换,查了下原因,在http://bbs.chinaunix.net/thread-1675446-1-1.html看到了 P ...

  7. 阿里云配置ssl证书服务遇到的几个问题和解决方法

    系统环境: 系统:阿里云ECS CentOS6.5+Apache2.4.10 前提:公司需要将站点升级到使用SSL证书服务(https) 实践执行:在阿里云的证书服务--选择了一个免费的证书服务,毕竟 ...

  8. Vue.js——理解与创建使用

    Vue.js 概念:是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API,作者是尤雨溪是中国人. 优点: 1)易用 已经会了HTML,CSS,JavaScript?即刻阅读指南开始构 ...

  9. linux下使用screen和ping命令对网络质量进行监控

    linux下使用screen和ping命令对网络质量进行监控 场景:应用连接云服务器经常偶尔会出现连接不上的情况,android和IOS端连接的时候也会出现tcp延时5秒以上,现在想验证是否是云服务商 ...

  10. canvas图像裁剪、压缩、旋转

    转载于:http://www.cnblogs.com/dailc/p/7843204.html 前言 前段时间遇到了一个移动端对图像进行裁剪.压缩.旋转的需求.考虑到已有各轮子的契合度都不高,于是自己 ...