Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序
文章目录
- 为什么要学习 go
- 开发环境搭建 -- MAC
- 运行第一个go程序
- go 函数的返回值设置
- go 函数的命令行参数
为什么要学习 go
在如下几个应用场景的需求下产生了go:
- 超大规模分布式计算集群
- 多核硬件的架构
- web模式下的大规模开发和频繁的进度更新
所以go 语言有如下几个特点:
- 简单。 只有25个关键字,相比于C的37个,C++的84个已经是很简单了
- 高效。编译型语言,也支持垃圾回收,同时支持指针直接访问内存。
- 云计算语言。docker 和 kubernate 都是通过go语言开发的
- 区块链语言。
对于存储领域来说,go语言已经实现了很多大规模的高性能和高并发框架,能够快速高效得完成一个存储组件的开发。而且最近想要学习MIT 6.824课程过程中的一些很有趣的lab需要使用go来完成,这个过程的学习和提升就很有趣了。
开发环境搭建 – MAC
新建本地目并设置环境变量
在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
安装go
brew install go
// 会直接安装go 的最新版本 1.14
安装完成之后 通过go version
查看安装golangci-lint
brew install golangci/tap/golangci-lint
golangci-lint作为代码静态检查工具,后续开发过程中可以使用make lint(makefile中添加)预先检查代码中不符合go编码规范的地方,否则流水线禁止提交,可以提前做到代码风格的一致性和可读性开发工具安装
这里看个人习惯:vscode , goland都是可以的
mac 下的工具安装:
brew cask install goland
运行第一个go程序
之前创建好的源码路径
$GOPATH/src
目录下新建一个ch1目录,再在该ch1
目录下新建一个以hellow_world.go
命名的go文件hello_world.go
文件中输入如下代码package main // 表明代码所在的模块包,这个是必须声明的import "fmt" // 引入代码依赖//实现功能 func main() {fmt.Println("Hello World") }
运行
go run hello_world.go
也可以编译生成二进制文件
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程序相关推荐
- java环境陪孩子_Java启蒙之路-Java开发环境搭建与第一个Java程序
Java开发环境搭建 "工欲善其事,必先利其器",从前面的章节我们了解到,Java程序的运行过程首先编写Java程序,然后再对Java源文件编译,借助JVM运行程序.现在问题来了, ...
- angularjs学习笔记一——了解angularjs、开发环境搭建、第一个angularjs程序
一.什么是angularJS angularJS是基于javascript的框架,所谓框架,自然就是封装了很多功能,举个例子,使用原生javascript,如果你要写一个网页幻灯片,你可能需要几十行代 ...
- 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 ...
- TensorFlow深度学习应用开发实战(深度学习简介和开发环境搭建)
一.深度学习的发展及其应用 1.1 深度学习的发展历程 1956年,John McCarthy(约翰·麦卡锡)等人在美国达特茅斯学院(Dartmounth College)开会探讨如何使用机器模拟人的 ...
- 实时操作系统-NuttX学习笔记(1)-开发环境搭建
1 简介 1.1 背景 学习NuttX视频教程,该视频教程语言为英文,为了在以后的工作学习中用到,在此记录学习内容,方便自己和大家查阅. 1.2 开发环境 虚拟机+系统:虚拟机VMware® Work ...
- Beaglebone Back学习三(开发环境搭建)
开发环境搭建 1 Ubuntu环境搭建 2 Window环境搭建 3 开发板环境搭建 1 Ubuntu环境搭建 (1)安装必要的网络工具 samba nfs tftp vmware-tools sam ...
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
网友分享,拿来共享一下 这是Hadoop学习全程记录第2篇,在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序. 新说明一下我的开发环境: 操作系统:在windows下使用wub ...
- libgdx 学习笔记一 开发环境搭建
本章内容讲述 libgdx 开发环境.怎么配置eclipse 用来开发,并且在桌面和android中运行libgdx applications 注:文章就是根据libgdx官方文档翻译或加入自己的理解 ...
- 01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包
1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存: 2.开发人员专注业务实现,降低了心智负担 : 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面 ...
最新文章
- 技本功丨请带上纸笔刷着看:解读MySQL执行计划的type列和extra列
- 搜狗输入法电脑版SougouPhoneService占用adb进程的问题
- 统计学习方法|感知机原理剖析及实现
- C++中mutable、volatile关键字
- 数据中心业界迎来机器学习工具
- 剑指offer之61-66题解
- IDEA 建测试类的快捷键
- 20145305 《Java程序设计》第7周学习总结
- mysql 主从备份问题_我遇到的mysql主从同步的问题
- Linux学习笔记-消息队列的打开、创建、控制
- 58 到家数据库 30 条军规解读
- 谷歌 Daydream VR 开发工具
- 关于javascript和typescript学习总结
- Windows的cmd中如何关闭端口
- 影片剪辑app android,猫饼剪辑app
- 琢磨事琢磨人琢磨钱,成大事也!
- 2.1、函数的返回值
- Arcgis实验一 空间数据数字化、投影变换与仿射变换
- 这年头,做硬件工程师没前途?
- python新闻评论分析_使用 python 抓取并分析京东商品评论数据