通常前端大手子写js写久了,要么就是去尝试其余语言,从其余语言的角度理解js收获不同的感觉,要么就是去研究js的内部实现,为啥会有this,为啥会有做用域,闭包这些耳熟能详的知识点。固然,我是个菜狗,可是也想体验一下比较js和其余语言的感受。html
我在上学的时候,被c和c++深深的折磨过,到如今还对神同样的指针有阴影,个人指针不是指向锟斤拷就是指向烫烫烫😠。可是私觉得要想成长就要敢于跳出温馨圈,强类型语言的指针就是心魔,克服了就是神,被压制住永远都是魔。机缘巧合下,开始了学习go,我也但愿在个人学习过程当中,可以对比js的相关特性,让本身对js的理解可以加深(也许?)。前端
这篇文章是面向新手的,各位大手子能够忽略掉。若是文中有什么错误理解或者错误观点,或者各位看官老爷有什么意见或者建议欢迎在评论中提出来,必定即时更正。Thanks~vue
js是依赖于宿主的环境,js 依赖于node环境或者浏览器环境,他是站在巨人的肩膀的上的。 go就不同了,go做为一个成熟的语言,他独立了,因此要想运行go语言,是须要安装的。(这也许就是成长的代价吧)java
安装的过程很简单,官网下载,安装。 大功告成。node
远古版本的go须要配置环境变量,都1.12的船心版本了,开箱即用。c++
编译器goland,走一波。golang
虽然不须要手动配置path了,可是root仍是要选好。就这样第一个go项目目录就建好了。可是没有清晰结构的项目目录都是虚假的项目。没有命名规则的代码都是虚假的代码,既然进了go的门,就遵照一下你们约定的go规范嘛。后面的文章会介绍test函数和文件的编写。浏览器
_test
结尾Test
开头没有hello world 的新语言学习都是不完整的,咱们经过命令行,将hello world 输出。bash
go中每一个文件都是package,内置package 和 文件的引入都使用import
关键字引入。闭包
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello World");
}
复制代码
package
是必需要声明的,package名字能够不与文件名一致。由于咱们使用fmt的Println进行输出,因此要引用fmt
go run ./main.go
复制代码
能够看到Hello world就在控制台输出了,可是本着科研精神,若是我改一些须要注意的地方,程序能正确运行吗?
如截图所见,package名字和文件名字不同不影响运行。咱们run的仍是main package。
咱们准备run一个不是main的package ,可是他的文件名仍是main.
看来即便你叫假发,村里的乡亲仍是只认识桂。
文件名和package 的关系上面已经理清了,那么,不管vivian仍是张二丫,只要本质是张二丫,乡亲们就认识你。
可是若是main文件没有main函数,还能跑吗?
看来,你要是没了用途,管你假发仍是桂,乡亲们照样翻脸不认人。
js中没有main函数必须作入口才能运行等等条条框框,因此你们写起函数来也很随意的,固然也有一些规范,但都不是语言层面的。Go不只要求要有main函数,并且还规定了这个函数头头必须和外面的妖艳贱货不同。
java中main的返回值是void,这是强制的。一样go中,main也不能有返回值。又本着科研的精神,咱们在犯错的边缘试探一下。
嗯能够看到,我还没运行的时候,就各类红色飘飘。
main函数不支持传参。官网是这么说的
The main package must have package name main and declare a function main that takes no arguments and returns no value.
JS是一种解释型语言,从现象上来看就是不用编译。具体的解释能够看这篇大佬的文章,这里就不赘述了。前端中vue文件的编译其实能够理解是虚假的编译,他是为了让vue文件压缩转换成宿主环境能识别的js和html,而不是机器识别的。可是go是强类型语言,文件想被系统运行要转换成二进制文件才能够,多年不编译文件的菜鸡我,再次见到二进制的文件居然有点小激动。
以前说你们规定,编译后的文件都放在了pkg文件夹中,咱们在pkg文件目录下,运行
go build ../src/main.go
复制代码
就能看到pkg文件夹下有了个可运行的二进制文件main了。
写多了随意的js,在接触go的时候其实确实有点不适应。可是我以为强类型语言可以很好的规范代码,不再会出现用的时候才知道是什么类型的这种状况。 从hello world中,咱们了解了package 和 file name 以及 main函数的命名规范,以及初识了高贵的既不付出也不接受好意的main函数。
就这样,我拥有了第一个由go生成的二进制文件,快乐。