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,第二个是我们传入的命令行参数
相关文章:

html生成的超级链接预览功能,超链接特效
功能说明超链接特效功能是基于报表特殊效果功能的一种扩展实现。报表特殊效果功能的作用是为单元格添加一些特殊的显示效果。超链接特效可以给超链接添加特殊显示效果,实现超链接功能的扩展增强。当产品默认生成的超链接显示效果不能满足用户的个性化需求时…

ROOT android 原理。 基于(zergRush)
出自: http://bbs.gfan.com/android-2996211-1-1.html 须要ROOT的同学请去上面的地址下载。 a.控制手机创建个暂时目录,然后把zergRush脚本写入此目录,并改动此文件权限使之能够运行(这一步无需ROOT权限); adb shell rm -r /data/local/tmpadb shell mkdir /data/lo…

Oracle数据库日常维护知识总结
DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。首先要说的是,不同版本数据…

JAVA 第五周学习总结
20175304 2018-2019-2 《Java程序设计》第五周学习总结 教材学习内容总结 Java为什么要定义接口:接口的作用是实现多重继承,因为一个子类只能继承一个父类,但是可以实现一个或多个接口。使用关键字interface来定义一个接口,定义方…

Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异
文章目录1. Go 语言编写测试代码2. Go 的变量3. Go 常量定义1. Go 语言编写测试代码 源码文件以 _test结尾: xxx_test.go测试方法名需以Test开头: func TESTXXX(t *testing.T) {..} ,且参数列表直接用go 默认的test参数即可 如下first_test…

Scala:Functions and Closures
1 object Functions {2 def main(args: Array[String]) {3 // 本地函数4 def localFun(msg: String) println(msg)5 localFun("Hi")6 7 // 函数对象8 var list List(1, 2, 3)9 list.foreach((x: Int) > println(x)) 10 list.fore…

云计算机机房怎么样,如何知道云电脑配置多少?怎么选择云电脑机房?
一般在玩一款游戏时,需要考虑玩游戏的配置,云电脑帮助我们实现配置的需求,那如何才能知道云电脑配置是多少,该怎么选择云电脑机房。在使用云电脑时,我们不用考虑自己的手机、平板和电脑的硬件,只要设备能正…

eclipse中新建android项目,不自动生成R.java
http://huyuantai000.iteye.com/blog/1681582转载于:https://www.cnblogs.com/wmm3416/p/3386698.html

获取子iframe的属性
第一种方法: <iframe name"iframeName" src"http://www.test.com"></iframe> // name"iframeName" 取值 window.frames[iframeName] 第二种方法: <iframe id"iframeId" src"http://www.t…

Go: 分布式学习利器(3) -- Go的数据类型和运算符
文章目录1. Go的数据类型1.1 类型转化1.2 类型的预定义1.3 指针类型2. Go 的运算符1. Go的数据类型 GO的基本数据类型如下: bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // 基本和uint8 类型一样 rune // 代表unicode …

云职教课堂计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...
参考答案如下智慧职教最新最全【判断题】两种气体在相同温度下放入同一个容器中,测得的压强分别为 和 ,则把它们同时放入容器中后的总压强为 .云课【单选题】根据物质的导电能力,将物质分为哪些类别?A. 导体 B. 半导体 C. 绝缘体 D. 以上都对堂计【单选题】按照数的进位制概念…
测试用例挑选策略
在软件开发过程中,无论是在feature testing还是在final regression testing中,测试策略的好坏在整个质量保证过程中起着至关重要的作用,尤其是在测试资源有限的情况下,影响更为突出。好的测试策略能够更快速的发现软件最有value的…

php json josn_decode()返回的是对像,如何把对像转成数组
php json josn_decode()返回的是对像,如何把对像转成数组 a.php传值页面,使用 json_encode($array)对数组进行加密码. b.php页面在接收a.php传过来的页面的值使用的是 json_decode($array),发现解密出来的数据是对象形式的: array(2) {[0]>…

【题解】黑格覆盖
题目描述 在一张由MN个小正方形格子组成的矩形纸张上,有k个格子被涂成了黑色。给你一张由mn个同样小正方形组成的矩形卡片,请问该卡片最多能一次性覆盖多少个黑格子? 输入输出格式 输入格式 输入共k1行: 第1行为5个整数M、N、m、n…

Go 分布式学习利器(4)-- 条件和循环
文章目录1. 循环语句2. 条件语句2.1 if...else 条件2.2 switch 条件1. 循环语句 Go语言和其他语言在循环语句上的主要差异是 Go语言仅支持for关键字。 语法形式:for i : 5; i > 0; i--,不像其他语言有两个小括号左右围着。 两种不同的循环体语法如下࿱…

php 对象的执行
1.BNF范式 %token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"unticked_statement: | expr ; { zend_do_free(&$1 TSRMLS_CC); }expr:r_variable { $$ $1; }| expr_without_variable { $$ $1; } ;r_variab…

golang不编译.html,golang之条件编译
Go语言能够经过go/build包里定义的tags和命名约定来让Go的包能够运行不一样的代码。html标签编译在源代码里添加标注,一般称之为编译标签(build tag)。编译标签采用靠近源代码文件顶部用注释的方式添加。go build在构建一个包的时候会读取这个包里的每一个源文件而且…

深入理解Struts2中的OGNL表达式
Struts 2中的表达式语言Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言; JSTL(JSP Standard Tag Library),JSP …

[ZJOI2010]网络扩容
Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。 求: 1、在不扩容的情况下,1到N的最大流; 2、将1到N的最大流增加K所需的最小扩容费用。 Input 第一行包含三个整数N,M,…

zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境
近期需要整理MIT6.824 中 分布式系统协调服务 zookeeper 的一些知识,想要在Mac 本地搭建一个可以方便运行调试的zookeeper环境,这玩意竟然耗费了一上午的时间,实在是不可忍;当然,主要还是因为对Java的编译运行环境 以及…

南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf
南昌大学2008学年第二学期高等数学期末考试试卷( 3 15 )一、 填空题 每空 分,共 分 a 3i j 2k, b i 2j k, (2a)(3b)1.设 则 _____.2 2 2 22. 函数 z ln[(25 x y )(x y 4)]的定义域是_______________________…

金智教育CTO:大数据人才培养要先行一步
金智教育CTO、北航云计算硕士项目主任陈滢博士认为,虽然在中国,互联网行业已经有了比较多的大数据实践,而且像金融、电信等行业也确实感受到了大数据给业务带来的压力,但是从整个大数据市场来看,还是“雷声大、雨点小”…

[NOIP2015]子串
Luogu2679 /* 思路清晰: 1.状态 2.转移方程:哪些状态相互影响/记忆化搜索思想 3.循环顺序 4.优化*/ #include<bits/stdc.h>using namespace std;typedef long long LL;const int mod1e97; const int MAXN1005; const int MAXM205;char a[MAXN],b[M…

Go 分布式学习利器(5)-- 数组和切片
文章目录1. 数组的声明2. 数组元素的遍历3. 数组的截取4. Go 语言的切片5. 数组 和 切片的共同点1. 数组的声明 声明并初始化为默认的零值 var a [3]int声明同时初始化为指定的值 b : [3]int{1,2,3}多维数组初始化 c : [2][2]int{{1,2},{3,4}} 测试函数: func Te…

如何用计算机求锐角三角比,9.3用计算器求锐角三角比教学案
侨润中学教学案八年级数学学科第 6 周第 4 节总29 课时主备人唐云玲授课人上课时间2012年3月22 日课题9.3用计算器求锐角三角比(1)课型教学目标1、学会用计算器求任意角的三角函数值。2、培养学生熟练地使用现代化辅助计算手段的能力3、培养学生运用现代化仪器的思想࿰…

详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计…

二级域名session 共享方案
1.利用COOKIE存放session_id(); 实例:域名一文件php代码:<?php session_start(); setcookie("session_id",session_id(),time()3600*24*365*10,"/",".session.com");$_SESSION[user_name] 梁山良民; echo $_SESSION[…

idea中文乱码问题
需要统一编码,具体步骤如下所示: 最好在编辑页面右键设置file encoding也为utf-8编码方式 转载于:https://www.cnblogs.com/q-1993/p/10630496.html

Go 分布式学习利器(6)-- Map
文章目录1. Map的声明2. Map 元素访问带来的问题3. Map 元素的遍历4. 通过Map 实现 函数对象(C)5. 通过Map实现一个简单Set功能1. Map的声明 基本的几种声明和初始化方式如下: m : map[string]int{"one":1, "two":2, &…

Javascript 拖拽的一些高级的应用——逐行分析代码,让你轻松了解拖拽的原理...
我们看看之前的拖拽在周围有东西的时候会出现什么问题? 在高级浏览器中不会有啥问题,我们放到IE7下面测试一下,问题就出来了。如图 我们可以很清楚的看到,文字都已经被选中了。那这个用户体验很不好,用起来也不方便。顺…