GoLang——Hello World,打开新世界的大门
本文始发于个人公众号:TechFlow,原创不易,求个关注
今天是Go语言系列的第一篇文章,我们来聊聊这门新的语言和它的基础语法。
浅谈Golang
作为程序员而言,往往对于学习新的语言都是有抗拒的。如果你用惯了Java,那么你可能不太愿意去学Python,如果你刚学C或者C++可能你也会看不上Java。因为这个原因还会引发很多口水仗,这很正常。我当时写C++的时候也看不上Java,写了Java又不想学Python,现在学会了Python,有时候也会不想看其他语言写的代码。
但是随着我们的成长和实力的提升,我逐渐发现学习一门语言的成本在飞快地下降。毕竟天下语言都是程序,就好像武侠小说里各门各派的武功眼花缭乱,但是归结起来无非是拳脚功夫、刀剑或者是内功这么几种。语言也是一样,虽然我会的语言也不够多,远远没达到可以指点江山的地步。但也发现了很多语言之间的相关性实在是很强,有些理念一脉相承,有些更像是一个模子里刻出来的。既然如此,我们为什么需要学习Go这样一门语言呢?
网上相关的信息很多,很多大牛架构师高谈阔论。很多观点和看法我并没有很深的体会,所以我就不做搬运工了。简单说下我个人的一点浅薄的看法。
当初学习Golang这门语言的原因很简单,纯粹是因为工作需要。当前的公司几乎所有的系统都是以Golang写的,所以学习Golang是必须的。但是学会语言基本的使用和精通一门语言这是两回事,学会基本的用法是因为工作需要,而让我想要花时间把这门语言精通是因为一门课程。这门课程非常著名,它是MIT(麻省理工)的分布式系统的公开课,当中的内容和课后作业都非常硬核,更关键的是课后作业是用Golang写的。
在学习这门课程的过程当中,经过了一些思考和一些观察,Golang的确在分布式处理的场景和问题当中有一定的优势,许多优秀的解决方案都是基于Golang写的。并且这两年各类语言的流行变迁情况也印证了这一点,在最新的全世界程序员最想要学习的语言当中,Golang排名前3。在全球语言流行排行当中,Golang也冲进了前十,要知道这门语言才诞生十年。
并且在国内Golang工程师的需求量也与日俱增,我纯属好奇去拉勾网看了一下,全国Golang的岗位是341个。
看起来似乎不多,但是我们再来看下就业大户Java,也才500+
要知道,Java几乎是CS必学的语言,所有CS毕业以及相关专业毕业的学生都可以号称自己会Java。但是Go不一样,它太新了,诞生不过十年,以目前高校的反应速度以及筛选课程的能力,它入选中国的教材目测最少还需要5-10年。并且和Java相比,Golang要好学的多。所以如果你还没有毕业,想要成为一名工程师,想要找一份工作,那可以考虑学习一下Go,说不定竞争压力会比Java小得多。
我个人觉得Golang是一门非常有个性的语言,长处与短处都非常的明显。关于它的长处很多,相比于一一列举出来,在实际学习和运用的过程当中领会到的感受会深得多。
Hello World
学语言第一件事就是敲Hello World,我想所有语言都不例外,我们也来看下Golang的Hello World,来看下它的基本结构。
package main
import (
 "fmt"
)
func main() {
 fmt.Println("Hello World")
}
我们来简单看下这段代码,可以把这段代码分成三个部分。
最上面的是模块名,也可以说成是包名,然后是引入包的语句。这一块其实没什么好说的,很多语言都是这样的结果,比如Java和Python。在Golang当中main package表示一个独立的程序,而不是一个包。在main package下的main函数代表这个独立程序的执行入口,和C++以及Java当中的main函数比较类似。我们可以在main函数里调用其他包的各种函数。
fmt是Golang当中的标准输出包,我们调用它来输出我们想打印的东西。
写完了Hello World之后就要执行了,Golang提供了两种执行方式,一种是直接go run + 要执行的文件名。还有一种是和C++一样先进行编译,再通过./调用编译之后的二进制包。
当然执行之前我们需要在电脑上配置Golang的环境,这方面网上的资料很多,并且Golang的安装也比较简单,基本上没有什么坑,所以照着网上的博客安装就好了。
我们来分别看下这两种调用方式,第一种我们直接使用go run执行代码:
还有一种方式是我们先通过go build对Golang的代码先进行编译,会生成一个二进制文件,之后我们直接./运行这个文件。
所以从这里我们可以看出来,Golang是编译型语言而不是解释性语言,因此它的效率会非常高,实际上由于Golang的一些底层设计和特性,Golang的运行效率非常高,在绝大多数场景比Java更快,仅仅次于C++。
IDE
最后简单聊聊Golang的开发环境,其实现在开发环境已经普世化了,很多代码编辑器可以用来写各种语言。比如业内比较流行的vscode,Atom,Sublime等等,这几种当中我个人最喜欢vscode,功能非常强大,拥有海量的插件支持,并且页面风格和使用体验也不错,并且还是免费的。
另外一个比较常用的是Goland,它是Jet Brains公司专门为Golang开发的IDE。Jet Brains公司专门发开各种语言的IDE,几乎每一种语言的IDE都广受欢迎。写过Java的同学应该对IDEA都不陌生,它的体验比eclipse要好用得多。同样,Goland对于Golang的支持也非常好,使用体验非常棒,而且如果之前用过它家的其他产品会非常适应。
Goland页面风格以及各方面体验都非常棒,但缺点也很明显,一个是基本上只支持Golang,另一个缺点就是贵。免费的社区版要阉割掉一些功能,而专业版则要好几千人民币。不过如果是学生的话可以免费申请,不得不说还是非常人性化。
除了这些之外,还有七牛团队开源的liteide,基于C++ QT开发,因此执行效率很高,但据说调试功能不太好用。我也没有用过,感兴趣的小伙伴可以试试。
今天的文章就是这些,如果觉得有所收获,请顺手点个在看或者转发吧,你们的举手之劳对我来说很重要。
GoLang——Hello World,打开新世界的大门的更多相关文章
- Python打开新世界的大门-入门篇1
		
目录 题记 Python技巧.避坑及心得 八种数据类型 循环 函数 Homework 题外话 之前没有写博客的习惯,现在开始写觉得入门也太晚了吧,看看同龄的大哥都写了十几万字.于是 ...
 - echart 打开新世界的大门
		
实时折线图 option = { backgroundColor:'#2B2B2B', tooltip: { trigger: 'axis' }, legend: { data:['频率'], tex ...
 - 在网址前加神秘字母,让你打开新世界(z)
		
在网址前加神秘字母,让你打开新世界 1.在百度云后面加“wp”可以高速下载百度云资源<ignore_js_op> 2.在任何网址前面加“wn.run”(一定要加到这个网址www的前面)之后 ...
 - 打开新世界的第一步:学习servlet
		
什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-F ...
 - 文科生打开python的大门
		
作为唯一的一名教育学院的学生,加入python课程,一定要声明我可不是并不是被迫选课的!虽然是文科生,但是是对编程这种东西很感兴趣的文科生.从站在python门口的张望,到现在悄悄把门打开,越来越感觉 ...
 - AI生万物,新世界的大门已敞开
		
四月是万物复苏的时节,一年一度的GMIC全球移动互联网大会也在这个时间如期而至,在4月26日-28日的会议期间,有超过三百位行业专家进行了精彩的演讲,更有数万名现场观众感受到思维碰撞迸发出的火花. 作 ...
 - 第一步,怎么打开react的大门?
		
前言 其实我的react的实战经验很少,大概是17年-18年写了一个react全家桶的后台管理系统.猜测这个项目应该还一直在使用 在我手里的vue项目就比较多了,技术栈一直是vue全家桶.最近也在深入 ...
 - 菜鸟VUER学习记——零0章、打开新的大门
		
是什么 基于MVVM模型,核心库只关注视图层,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件的js框架.根据项目的复杂度和需求,渐进的加入插件以达到恰到好处的程度. 解决问题 UI组件化 ...
 - 打开CDQ的大门&BZOJ3262
		
题目传送门 第一次接触CDQ分治,感谢YZ大佬的教导. CDQ分治就是一种奇特的分治方法,它用左区间的区间信息来更新右区间. 设CDQ(L,R,l,r)表示递归到区间[L,R],区间的值为[l,r]. ...
 
随机推荐
- appnium适应之配置
			
一.session #获取包名和acctivename#这个工具在adk包里面aapt.exe dump badging E:\Wandoujia_851097_web_seo_baidu_binde ...
 - Java 14 发布了,可以扔掉Lombok了?
			
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records 官方吐槽最为致命 ...
 - 面向对象里is-a和has-a的含义
			
面向对象的核心思想是:抽象.封装.继承.多态.在实践中用的最多的术语就是 is a(是一个) ,和 has a(有一个).其实他们的意思很简单,对应面向对象设计中的两种形态继承.组合. 一.继承( i ...
 - Natas31 Writeup(Perl 远程命令执行)
			
Natas31: 源码如下: my $cgi = CGI->new; if ($cgi->upload('file')) { my $file = $cgi->param('file ...
 - Web中间件 - 常见漏洞总结
			
*文章来源:https://blog.egsec.cn/archives/472 *本文将主要说明:Web中间件常见漏洞的产生原因以及修复方案 什么是Web中间件? 百度百科是这样解释的:中间件是介于 ...
 - iframe框架及优缺点
			
iframe框架及优缺点 HTML5不再支持使用frame,关于frame与iframe的区别,可以参阅 iframe与frame的区别 基本使用 src:规定在iframe中显示的文档的URL. f ...
 - vue one
			
目录 复习 Vue框架 Vue的优点 Vue的使用 vue完成简单的事件 vue操作简单样式 小结 指令 文本指令 事件指令 属性指令 条件指令 复习 """ 1.BBS ...
 - 修改imx6ull开机LOGO(一)
			
imx6ull启动的时候默认显示uboot自带的开机画面,按照如下步骤修改为我们想要的开机画面,如下: 首先去掉液晶屏右上角的打印信息 修改/drivers/video/cfb_console.c ...
 - Python第二章-变量和数据类型
			
变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...
 - 分享个Class工具类
			
import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLCo ...