「Go学习笔记」1.初识Go

码处高效 · · 661 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

由于在公司广泛使用Docker的大环境下,突然对它的编程语言(Go)了解下。并且感觉现在Go语言的应用也是越来越广泛,很多互联网大厂都在使用,目前利用业余时间来学习下,主流还是Java,学明白以后可能考虑转哦????。如果你也感兴趣不如一起来学习。

Go介绍

  • 简史

    Go语言是Google于2009年正式发布的一款开源的静态编译型语言。Go语言最早于2007年Robert Griesemer(Java HotSpot虚拟机、V8引擎开发者之一)和Ken Thompson(贝尔实验室UNIX团队成员,C语言、UNIX和Plan9创始人之一)与Rob Pike三人在业余时间联合开发。(老外就是吊)时至今日Go语言已完成自举,社区生态斐然,包括大量拿的出手的杀手锏级项目(Moby、Docker、Kubernetes、Gogs、Grafana、Etcd)。

  • 特性

    1. Go语言拥有自动垃圾回收功能,同时也允许开发人员干预回收操作。
    2. Go语言有着更加丰富的内置类型,在错误处理方面语法更加精简高效。
    3. Go语言函数支持多个返回值,而函数也是一种类型,可以作为参数传递。
    4. Go语言对多核处理器编程进行了优化,可以从程序与结构方面来实现并发编程。
    5. Go语言初次编译速度媲美C/C++,甚至二次编译的速度明显快于C/C++,同时又拥有接近于Python等解释型语言的简洁。
  • 命名规范

    Go语言的项目命名一般采用 【域名+项目名】,例如:github.com/example,这样命名的目录一是可以分割项目,不容易重名,二是能够迅速找到原项目的地址,三是方便获取代码包。

  • 代码强制格式化

    Go语言有一个特色就是强制代码格式化,在你保存代码之后,可以使用go fmt工具格式化,当然即使没有手动格式化,在编译时,Go语言编译器也会自动格式化所有源代码,这种强制格式化的做法可以有效统一编码风格。

开发环境

目前Go语言支持Linux、FreeBSD、Mac OS、和Windows平台,安装包可以从 https://golang.google.cn/dl/ 下载。

基本命令及使用

  • 基本命令
    安装Go语言环境后就可以使用go命令了,直接输入go help查看有哪些命令可用:

    $ go help
      go是用于管理Go语言源代码的工具。
      用法:
          go command [arguments]
          
      包含的命令如下:
      - build: 编译源代码包和依赖。
      - clean: 删除对象文件。
      - doc: 显示Go包或程序实体的文档。
      - env: 打印输出Go语言环境的变量信息。
      - bug: bug提交程序。
      - fix: 修复程序。
      - fmt: 格式化源码包中代码。
      - generate: 通过扫描Go源码中的go:generate注释来识别要运行的常规命令。
      - get: 下载并安装指定的包与依赖。
      - install: 编译并安装指定的包与依赖。
      - list: 打印指定源码包信息。
      - run: 编译并运行Go程序。
      - test: 测试一个源码包。
      - tool: 运行一个指定的tool。
      - version: 打印输出Go环境版本。
使用"go help [command]"查看每一个命令的使用细节。
- 目录结构
1. GOROOT结构
  $GOROOT 作为Go语言环境的根目录,放置了下面这些内容:
    & cd $GOROOT && ls -l
-rw-r--r--    1 root  wheel  55389  9 26 02:52 AUTHORS    # 所有参与Go语言开发的人员名单
-rw-r--r--    1 root  wheel   1339  9 26 02:52 CONTRIBUTING.md    # 为Go语言贡献代码的说明
-rw-r--r--    1 root  wheel  84339  9 26 02:52 CONTRIBUTORS   # 所有贡献者名单
-rw-r--r--    1 root  wheel   1479  9 26 02:52 LICENSE    # Go语言的开源协议
-rw-r--r--    1 root  wheel   1303  9 26 02:52 PATENTS    # Go语言专利说明
-rw-r--r--    1 root  wheel   1607  9 26 02:52 README.md    # 说明文件
-rw-r--r--    1 root  wheel    397  9 26 02:52 SECURITY.md
-rw-r--r--    1 root  wheel      8  9 26 02:52 VERSION    # Go语言版本文件
drwxr-xr-x   19 root  wheel    608  9 26 02:55 api  # Go语言API相关(变量、常量、函数)
drwxr-xr-x    4 root  wheel    128  9 26 02:55 bin   # 用于存储标准命令执行文件,go、godoc、gofmt三件套
drwxr-xr-x   50 root  wheel   1600  9 26 02:55 doc   # 存放标准库的文档
-rw-r--r--    1 root  wheel   5686  9 26 02:52 favicon.ico  # Go语言的图标
drwxr-xr-x    3 root  wheel     96  9 26 02:55 lib   # 存放一些特殊的库文件
drwxr-xr-x   16 root  wheel    512  9 26 02:55 misc   # 辅助工具和说明
drwxr-xr-x    6 root  wheel    192  9 26 02:55 pkg    # 存放Go语言标准库生成的文件
-rw-r--r--    1 root  wheel     26  9 26 02:52 robots.txt    # 禁止搜索引擎索引本地启动的Go文档
drwxr-xr-x   71 root  wheel   2272  9 26 02:55 src    # 存放GO语言自己的源代码
drwxr-xr-x  327 root  wheel  10464  9 26 02:55 test   # 存放测试验证相关的文件
2. GOPATH结构

  $GOPATH就是一个工作目录,我们开发GO语言程序就是在这里进行的,这个目录一般有三个文件夹:
- bin: 存放go install生成的可执行文件前面把$GOPATH/bin路径加入PATH环境变量后就可以在全局任意位置使用这个文件夹内的执行文件。
- pkg: 存放go编辑生成的文件。
- src: 存放我们开发的Go项目的源代码,不用工程项目的代码已包名区分。
```

开发工具

  • Visual Studio Code

    来自微软的开源编辑器Visual Studio Code的确是开发Go语言程序的好工具之一,庞大的生态系统使得它不仅仅是一个编辑器,它还拥有大部分Go语言开发过程中使用的工具链。

  • VIM-Go

    VIM编辑器是大部分程序员的最爱之一,在VIM的生态中也有一款比较流行的GO语言开发插件----VIM-GO,安装这个插件与安装其他VIM插件的方法一样。

  • Gogland

    来自著名的Jetbrains公司开发的IDE(Goland)是一款专门为Go语言开发而设计的IDE。

  • LiteIDE

    LiteIDE是一款专门为GO语言开发的跨平台轻量级集成开发环境,LiteIDE是开源的工具,代码托管在github上。

第一个Go程序

现在开始编写第一个程序了,创建一个组织目录,例如 code.local,然后建立一个项目名为hello-word,最终目录路径为$PATH/src/code.local/hello-word

接来下使用vim 编辑一个main.go


然后:wq保存,接来下可以直接使用go run命令运行程序。

到此我们就完成了第一个go程序。随着go语言越来越????,我对它也是很感兴趣,无奈没有太多的时间来学习,只能用周末来抽空看看,希望大家多多支持,如果你也对Go语言感兴趣,不妨点击下关注,一起学习。


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:码处高效

查看原文:「Go学习笔记」1.初识Go

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

661 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传