近期腾讯发布了《腾讯研发大数据报告》,Go语言在鹅厂的使用率,已经上升到了TOP5的位置了。

我们知道腾讯在智能运维尤其是DEVOPS方面,是走在各大厂的前列的,尤其是基于GO语言开的蓝鲸平台,水平相当高。

经笔者实地上手体验,GO语言在各个方面还是非常优秀的,因此笔者计划出一系列的教程详细的介绍一下GO语言的特性

一.GO常用终端命令
如果有读者没有使用本书有前文介绍的liteIDE做为开发环境,而是直接使用原生环境的话,那么在命令行或终端的常用命令简介如下:
go get:获取远程包(如下载go get "github.com/go-sql-driver/mysql"下载mysql的驱动包)
go run:运行程序,在liteIDE中对应Ctrl+R命令
go build:编译程序,一般无参数编译即可。如果需要编译某些源码文件,并生成可执行文件,需要加-o参数,并指定参数列表$ go build -o myexec main.go lib.go
go fmt:格式化源码,调整代码缩进等
go install:编译整个工程并生成可执行文件或者库文件。go install 是建立在 GOPATH 上的,可执行文件生成在GOPATH 下的 bin 目录。
go test:执行测试计划
二.GOPATH目录结构详述
第二章介绍的GO语言开发环境搭建时配置的GOPATH,就是GO语言的工程目录。如果想要构建一个项目,就需要将这个项目的目录添加到GOPATH环境变量中,多个工程目录之间可以使用分号;分隔。
一个Go语言项目的目录一般包含以下三个子目录:
src 目录:放置项目和库的源代码文件,其代码以包(package)的形式组织的存放,包是Go语言管理代码的重要机制,其作用类似于Java中的 package 和 C/C++ 的头文件。Go 源文件中第一段有效代码必须是package <包名> 的形式,如 package project1。包的名称又与 src 下的子目录是一一对应的。例如,若一个源文件被声明属于project1的包所属的代码文件,应该被放在src\log目录下。而\src根目录下的代码文件只能属于main 包。另外go get 命令安装的远程包,并被放到src目录下对应的包文件夹当中。
pkg目录:保存由go build命令生成的库(.a)文件。
bin目录:与 pkg 目录类似,保存由go build命令生成的可执行(.exe)文件。
一个典型的GOPATH目录结构如下:
G:/go/
     src/
         foo/
             bar/               (bar项目的代码)
                 x.go
             quux/              (quxx项目的代码)
                 y.go
     bin/
         quux                   (quxx项目生成的可执行文件)
     pkg/
         linux_amd64/
             foo/
                 bar.a          (bar项目生成的.a文件)
三.GO语言的Hello World
通过之前的介绍,我们终于可以来到所有编程语言都要遇到的“Hello World!”程序。
GO语言的“Hello World!”非常简单,如下所示:

这个“Hello World!”麻雀虽小五脏俱全,具体说明如下:
1. Go源代码文件的开头必须是package 声明
package声明的具体格式如下:
package name
其中name 为包的名字。
有关这个特性上文也已经介绍了,这里还有两点需要强调,一是同一目录下的同级文件必须属于同一个包;二是main 包是Go语言程序的入口包,一个Go语言的可执行程序有且仅有一个 main 包。
2.导入包
使用import语句,用于导入程序的依赖包:
import "name"
其中name 为所导入包的名字。当需要导入多个包时,用括号( )将包的名字包围起来,并且每个包名占用一行,具体如下:

import(
"name1"
"name2"
)

另外有一点需要注意,如果导入了没有使用到的包,则会报编译错误,例如我们在“Hello World!”多导入一个os包,

package main    // 声明 main 包,所有GO语言代码第一行必须是package + 包名
import (
"fmt"       // 导入打印字符串是需要用到的fmt 包
"os"
)
func main() {   // 声明 main 主函数,这是GO语言程序入fmt.Println("Hello World!") // 通过控制台打印 Hello World!
}

会报出 imported and not used: "os"的错误 
3.main函数
我们在代码的第5行func main() { 创建了main 函数,它是Go语言程序的入口函数,在Go语言中,所有函数都以关键字 func 开头的,定义格式如下所示:

func name (para_list) (return_list){func body
}

其中name(函数名):由字母、数字、下画线_组成,函数名不能以数字开头,在同一个包内,函数也不能重名。
para_list(参数列表):一个参数由变量名和变量类型组成,例如a int, b string
return_list(返回值列表):与参数列明一样,格式也是由变量名和类型组成,使用 return语句返回。由于GO语言中支持多返回值,这就要求return时必须与定义的返回值列表一一对应。
特别注意:Go语言func的{必须和函数名称在同一行,否则会有编译错误。
4.输出Hello World!
代码的第6行fmt.Println("Hello World!"),中Println 是 fmt 包中的一个函数,用来向控制台输出格式化数据,类似于C语言中的 printf 函数。

大厂都在用的GO语言入门-Helloworld相关推荐

  1. 易语言入门-HelloWorld

    易语言入门--HelloWorld 一.创建工程 二.编辑修改主窗口 三.增加按钮点击事件 四.运行 一.创建工程 程序-新建-选择windows窗口程序 二.编辑修改主窗口 右侧工具箱,选择添加编辑 ...

  2. 小白都能看懂的C语言入门教程

    文章目录 C语言入门教程 1. 第一个C语言程序HelloWorld 2. C语言的数据类型 3. 常量变量的使用 4. 自定义标识符#define 5. 枚举的使用 6. 字符串和转义字符 7. 判 ...

  3. 8分钟带你入门人工智能,互联网大厂都在用的高能AI算法

    哈喽,大家好,我是 Jack. 不少小伙伴问我,互联网大厂都在用哪些算法?有哪些算法值得学习? 这次,我做了一个视频,又剪了两周多,速度有点慢,但内容绝对充实. 主要是盘点一些互联网巨头,都在使用的人 ...

  4. go语言视频教程_ go语言入门视频教程_go语言实战视频教程

    许多人可能知道go语言的优点在哪里,但他们不知道go语言适合在哪里使用.通过学习go语言视频教程,可以清楚的知道go语言主要用于服务器端开发,其定位是用来开发"大型软件".学习go ...

  5. 打算自学编程,但是不知道该先学哪门语言入门?

    最近,看到这样的一个话题:"打算自学编程,但是不知道该先学哪门语言入门?编程初学者应该先学C++.Java还是Python?",作为一个新手,应该学什么语言入门比较好呢?相信这是困 ...

  6. C#forUnity快速入门(连载2)-C#语言入门

     C# for Unity 编程语言快速入门教程(连载2)---C#语言入门 接上篇内容,我们把更多的C#语言入门级编程习题发布如下,希望能够对C#编程小白提高技能有帮助. 三:  学习循环语句(续) ...

  7. python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析

    本文主要向大家介绍了Python语言入门之内存管理方式和垃圾回收算法解析,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 ...

  8. VML编程之------VML语言入门《VML极道教程》原著:沐缘华

    <VML极道教程>原著:沐缘华 1章4节:VML语言入门 1:VML语言入门 - 极道学法 在我正式开始讲解.你正式开始学习VML语言以前,请务必遵循以下规则,可以达到最佳效果.极道学习方 ...

  9. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

最新文章

  1. 用Python分析深圳程序员工资有多高?
  2. 第二组视频:MySQL复制
  3. python成长之路9——文件操作open
  4. maven 加入第三方库_maven加载第三方jar不能加载
  5. 欧几里得及扩展欧几里得算法
  6. Flume-NG一些注意事项(转)
  7. Linux 允许指定IP访问目录
  8. Android进程间通信(IPC)机制Binder简要介绍和学习计划
  9. springboot整合elasticsearch_Spring Boot学习10_整合Elasticsearch
  10. imagej链接资源
  11. php接收get数组数据,php-如何从wordpress数据库中获取数组值get_results
  12. 在C++程序中调用被C编译器编译后的函数为什么要加extern“C”?
  13. solr6.5的分词
  14. 根据ReentrantLock -- 解析AQS原理
  15. Go语言实战的知识图谱
  16. Django中文文档
  17. 数据库设计说明文档自动生成(支持Mysql、Oracle和Postgres)
  18. 中国移动 招聘 php,中国移动开启社招,这真的是机会?移动员工:携网转号累死你...
  19. isPrime()函数:判断素数,构造素数表
  20. JD如何获取cookie

热门文章

  1. html5中的pattern属性(表单验证input)
  2. javaScript系列笔记 - JS生成倒计时
  3. 关于DrvResetPDEV的函数的处理
  4. linux终端安装playonlinux,playonlinux 安装 qq
  5. 1990-2015年中国30万以上城市建成区标准化数据集
  6. 独热(One-Hot)编码简述
  7. Linux进程管理原理笔记
  8. python 培训 广渠门
  9. 如何显示文件后缀名,这4个方法很简单!
  10. 第八十二篇 机器学习(介绍)