菜狗前端初识go语言(一)

通常前端大手子写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

goland new project

虽然不须要手动配置path了,可是root仍是要选好。就这样第一个go项目目录就建好了。可是没有清晰结构的项目目录都是虚假的项目。没有命名规则的代码都是虚假的代码,既然进了go的门,就遵照一下你们约定的go规范嘛。后面的文章会介绍test函数和文件的编写。浏览器

  • src文件夹下面放源码
  • pkg文件夹放编译文件
  • 测试文件_test结尾
  • 测试函数Test开头
  • 项目的入口函数必须是main

Hello World

没有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文件

go run ./main.go
复制代码

test result

能够看到Hello world就在控制台输出了,可是本着科研精神,若是我改一些须要注意的地方,程序能正确运行吗?

Hello World 的不正确的打开方式

文件名和package 不一致

function name different from file name

如截图所见,package名字和文件名字不同不影响运行。咱们run的仍是main package。

package 不是 main

咱们准备run一个不是main的package ,可是他的文件名仍是main.

package not main

看来即便你叫假发,村里的乡亲仍是只认识桂。

function 的名字不是main

文件名和package 的关系上面已经理清了,那么,不管vivian仍是张二丫,只要本质是张二丫,乡亲们就认识你。

可是若是main文件没有main函数,还能跑吗?

no main function

看来,你要是没了用途,管你假发仍是桂,乡亲们照样翻脸不认人。

Main 函数有本身的骄傲

js中没有main函数必须作入口才能运行等等条条框框,因此你们写起函数来也很随意的,固然也有一些规范,但都不是语言层面的。Go不只要求要有main函数,并且还规定了这个函数头头必须和外面的妖艳贱货不同。

没有返回值

java中main的返回值是void,这是强制的。一样go中,main也不能有返回值。又本着科研的精神,咱们在犯错的边缘试探一下。

嗯能够看到,我还没运行的时候,就各类红色飘飘。

main function must no return

没有传参

main函数不支持传参。官网是这么说的

The main package must have package name main and declare a function main that takes no arguments and returns no value.

no parameter

编译

JS是一种解释型语言,从现象上来看就是不用编译。具体的解释能够看这篇大佬的文章,这里就不赘述了。前端中vue文件的编译其实能够理解是虚假的编译,他是为了让vue文件压缩转换成宿主环境能识别的js和html,而不是机器识别的。可是go是强类型语言,文件想被系统运行要转换成二进制文件才能够,多年不编译文件的菜鸡我,再次见到二进制的文件居然有点小激动。

以前说你们规定,编译后的文件都放在了pkg文件夹中,咱们在pkg文件目录下,运行

go build ../src/main.go
复制代码

就能看到pkg文件夹下有了个可运行的二进制文件main了。

binary file

总结

写多了随意的js,在接触go的时候其实确实有点不适应。可是我以为强类型语言可以很好的规范代码,不再会出现用的时候才知道是什么类型的这种状况。 从hello world中,咱们了解了package 和 file name 以及 main函数的命名规范,以及初识了高贵的既不付出也不接受好意的main函数。

就这样,我拥有了第一个由go生成的二进制文件,快乐。

相关文章
相关标签/搜索