文章目录

  • 为什么要学习 go
  • 开发环境搭建 -- MAC
  • 运行第一个go程序
  • go 函数的返回值设置
  • go 函数的命令行参数

为什么要学习 go

在如下几个应用场景的需求下产生了go:

  • 超大规模分布式计算集群
  • 多核硬件的架构
  • web模式下的大规模开发和频繁的进度更新

所以go 语言有如下几个特点:

  • 简单。 只有25个关键字,相比于C的37个,C++的84个已经是很简单了
  • 高效。编译型语言,也支持垃圾回收,同时支持指针直接访问内存。
  • 云计算语言。docker 和 kubernate 都是通过go语言开发的
  • 区块链语言。

对于存储领域来说,go语言已经实现了很多大规模的高性能和高并发框架,能够快速高效得完成一个存储组件的开发。而且最近想要学习MIT 6.824课程过程中的一些很有趣的lab需要使用go来完成,这个过程的学习和提升就很有趣了。

开发环境搭建 – MAC

  1. 新建本地目并设置环境变量

    在home目录下创建go目录,go/src目录,go/pkg/mod目录,分别作为go path目录,源代码目录,依赖模块目录

    修改~/.bash_profile文件,增加如下内容:
    export GOPATH="$HOME/go"
    export PATH="$PATH:$GOPATH/bin"

    如果在unix,则默认是$HOME/go;如果是windows ,则默认是%USERPROFILE%go

  2. 安装go
    brew install go // 会直接安装go 的最新版本 1.14
    安装完成之后 通过go version查看

  3. 安装golangci-lint
    brew install golangci/tap/golangci-lint
    golangci-lint作为代码静态检查工具,后续开发过程中可以使用make lint(makefile中添加)预先检查代码中不符合go编码规范的地方,否则流水线禁止提交,可以提前做到代码风格的一致性和可读性

  4. 开发工具安装
    这里看个人习惯:vscode , goland都是可以的
    mac 下的工具安装:
    brew cask install goland

运行第一个go程序

  1. 之前创建好的源码路径 $GOPATH/src目录下新建一个ch1目录,再在该ch1目录下新建一个以hellow_world.go命名的go文件

  2. hello_world.go文件中输入如下代码

    package main // 表明代码所在的模块包,这个是必须声明的import "fmt" // 引入代码依赖//实现功能
    func main() {fmt.Println("Hello World")
    }
    
  3. 运行 go run hello_world.go

  4. 也可以编译生成二进制文件 go build hello_world.go
    生成的二进制文件 运行所依赖的库已经链接好了,这个时候随意移动二进制文件都是可以运行的。

go 函数的返回值设置

不同与 java/C/C++ 的 return方式的返回值,go语言里需要设置
os.Exit(code int)
即如下代码

package main // 表明代码所在的模块包,这个是必须声明的import ("fmt" // 引入代码依赖"os" //引入os 的代码依赖
)//实现功能
func main() {fmt.Println("Hello World")os.Exit(0) // 设置返回值
}

go 函数的命令行参数

不同于C/C++/Java的命令行参数传入 直接通过 main 的参数char *args[]来保存,go 不同的是需要通过相关的依赖来进行传入。

  • main函数不支持入参
    func main (arg [] string)
  • 程序中直接通过 os.Args 获取命令行参数
package mainimport ("fmt""os"
)func main() {fmt.Println("command args: ", os.Args)if len(os.Args) > 1 { // len是数组求长度的函数fmt.Println("Hellow world ", os.Args[1])}
}

运行输出如下:

输出的结果 ,command args:之后的数组内容 第一个是我们的二进制binary,第二个是我们传入的命令行参数

Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序相关推荐

  1. java环境陪孩子_Java启蒙之路-Java开发环境搭建与第一个Java程序

    Java开发环境搭建 "工欲善其事,必先利其器",从前面的章节我们了解到,Java程序的运行过程首先编写Java程序,然后再对Java源文件编译,借助JVM运行程序.现在问题来了, ...

  2. angularjs学习笔记一——了解angularjs、开发环境搭建、第一个angularjs程序

    一.什么是angularJS angularJS是基于javascript的框架,所谓框架,自然就是封装了很多功能,举个例子,使用原生javascript,如果你要写一个网页幻灯片,你可能需要几十行代 ...

  3. DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu)

    DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu) 目录 1.安装nvidia驱动 2.安装CUDA ...

  4. TensorFlow深度学习应用开发实战(深度学习简介和开发环境搭建)

    一.深度学习的发展及其应用 1.1 深度学习的发展历程 1956年,John McCarthy(约翰·麦卡锡)等人在美国达特茅斯学院(Dartmounth College)开会探讨如何使用机器模拟人的 ...

  5. 实时操作系统-NuttX学习笔记(1)-开发环境搭建

    1 简介 1.1 背景 学习NuttX视频教程,该视频教程语言为英文,为了在以后的工作学习中用到,在此记录学习内容,方便自己和大家查阅. 1.2 开发环境 虚拟机+系统:虚拟机VMware® Work ...

  6. Beaglebone Back学习三(开发环境搭建)

    开发环境搭建 1 Ubuntu环境搭建 2 Window环境搭建 3 开发板环境搭建 1 Ubuntu环境搭建 (1)安装必要的网络工具 samba nfs tftp vmware-tools sam ...

  7. Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序

    网友分享,拿来共享一下 这是Hadoop学习全程记录第2篇,在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序. 新说明一下我的开发环境: 操作系统:在windows下使用wub ...

  8. libgdx 学习笔记一 开发环境搭建

    本章内容讲述 libgdx 开发环境.怎么配置eclipse 用来开发,并且在桌面和android中运行libgdx applications 注:文章就是根据libgdx官方文档翻译或加入自己的理解 ...

  9. 01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包

    1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存: 2.开发人员专注业务实现,降低了心智负担 : 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面 ...

最新文章

  1. 技本功丨请带上纸笔刷着看:解读MySQL执行计划的type列和extra列
  2. 搜狗输入法电脑版SougouPhoneService占用adb进程的问题
  3. 统计学习方法|感知机原理剖析及实现
  4. C++中mutable、volatile关键字
  5. 数据中心业界迎来机器学习工具
  6. 剑指offer之61-66题解
  7. IDEA 建测试类的快捷键
  8. 20145305 《Java程序设计》第7周学习总结
  9. mysql 主从备份问题_我遇到的mysql主从同步的问题
  10. Linux学习笔记-消息队列的打开、创建、控制
  11. 58 到家数据库 30 条军规解读
  12. 谷歌 Daydream VR 开发工具
  13. 关于javascript和typescript学习总结
  14. Windows的cmd中如何关闭端口
  15. 影片剪辑app android,猫饼剪辑app
  16. 琢磨事琢磨人琢磨钱,成大事也!
  17. 2.1、函数的返回值
  18. Arcgis实验一 空间数据数字化、投影变换与仿射变换
  19. 这年头,做硬件工程师没前途?
  20. python新闻评论分析_使用 python 抓取并分析京东商品评论数据

热门文章

  1. Form表单提交前进行JS验证的3种方式
  2. eclipse设置保护色非原创
  3. 杂谈---改变个人习惯
  4. css多行省略号兼容ie,css超出2行部分省略号……,兼容ie
  5. sklearn库安装_没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen
  6. python中的列表生成式_Python中的列表生成式
  7. 微型计算机有什么电路组成,第二章 微型计算机的基本电路组成
  8. php将json分页,php处理分页数据并返回json
  9. html 甘特图_甘特图该如何部署
  10. 别踩白块java程序代码_别踩白块源码