go语言静态变量 go语言环境变量( 二 )


跟所有的软件安装包一样,go语言编译安装是也需要接受许可协议,在图中红圈的位置单击选择框 , 同意许可协议 , 单击“Next” 。
在这一步你要改变go的安装目录 , 默认是安装在C盘下,C盘下文件文件太多会影响系统性能,单击红圈所示的“change”按钮会弹出安装目录选择对话框 。
在这个对话框中你选择你要安装go编译器的目录,选择后会在红圈所示的位置会显示你所选择的目录,如果不是你预期的目录 , 青重新选择,然后单击“OK”按钮,对话框会回到第三步的对话框,但是目录以及变成了你刚才选择的目录,这个对话框中单击“Next”按钮 。
这一步开始安装go编译器了,单击“Install”按钮 , 系统会自动安装go编译器到你刚才选择的目录中 。
如果不出意外,安装程序开始copy文件,并以进度条的方式显示当前的角度,一般5分钟左右就安装完了 。
党出现下面的界面的时候,表明go编译器已经安装完成了 。单击“Finish”按钮结束安装 。
安装完后要配置一些环境变量,首先要把go安装目录下的bin目录放到Path环境变量中 。
接着创建一个GOPATH环境变量 , 这个变量很重要,我自己写的代码要放到这个变量中配置的目录中,go编译器才会找到并编译
继续在创建一个GOROOT变量,配合go编译器安装的目录 。
完成步骤后,打开命令行goverison回车 , 如果配置没有错会出现go编译器的版本信息,如下图中红圈所示 。
Golang 的静态编译Go 语言和 C 语言go语言静态变量的一个很大的区别是go语言静态变量,Go 语言只静态编译,做个测试:
一方面是 Go 语言编译后的可执行文件大小比 C 语言的大很多,
另一方面是 C 语言的可执行文件需要依赖 glibc 动态库 , 
用 ldd 命令可以看出来:
或者直接删除 glibc 动态库, C 可执行程序报错,而 Go 的还能运行:
这时候只有内部命令可以运行,外部命令 , 包括ln甚至最常用的ls命令也不能运行go语言静态变量了:
设置好LD_PRELOAD环境变量之后,ln 命令可以运行,但是sudo仍然不能运行
只能靠root用户来重新创建软连接了:
所以用 sudo 来 rm 文件要小心,还是用root比较好 。如果没有预先留一个打开的root终端,登录都登不进去 。
Go语言的特点 类型 在变量名后边
也可不显式声明类型, 类型推断,但是是静态语言, name一开始放字符串就不能再赋值数字
方法,属性 分开方法名首字母大写就是就是外部可调go语言静态变量的
面向对象设计的一个重要原则:“优先使用组合而不是继承”
Dog 也是Animal , 要复用Animal的属性和方法,
只需要在结构体 type里面写 Animal
入口也是main, 用用试试
多态, 有这个方法就是这个接口的实现,具体的类 不需要知道自己实现了什么接口,
使用: 在一个函数调用之前加上关键字go 就启动了一个goroutine
创建一个goroutine,它会被加入到一个全局的运行队列当中go语言静态变量 , 
调度器 会把go语言静态变量他们分配给某个 逻辑处理器 的队列go语言静态变量,
一个逻辑处理器 绑定到一个 操作系统线程 ,在上面运行goroutine,
如果goroutine需要读写文件, 阻塞 ,就脱离逻辑处理器直接 goroutine - 系统线程绑定
编译成同名.exe 来执行, 不通过虚拟机, 直接是机器码, 和C 一样, 所以非常快
但是也有自动垃圾回收,每个exe文件当中已经包含了一个类似于虚拟机的runtime,进行goroutine的调度

推荐阅读