Go语言的特性

关于特性丢失

  • 为了简化设计,不支持函数重载和操作符重载
  • 为了避免c/C++开发中的一些bug和混乱,不支持隐式转换
  • Go语言通过另一种途径实现面向对象设计放弃了类和类型的继承
  • 尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型
  • 不支持动态加载代码
  • 不支持动态链接库
  • 不支持泛型
  • 通过recover和panic来替代异常机制
  • 不支持断言
  • 不支持静态变量

Go编译器的知识

目前有2个版本的编译器 :Go原生编译器gc和非原生编译器gccgo编译器,其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。

编译器gc编译速度很快,但是编译后的程序不能使用gcc链接,但是gccgo相反

Go的环境变量

$GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般都是 $HOME/go,当然,你也可以安装在别的地方
$GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
$GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
$GOBIN 表示编译器和链接器的安装位置,默认是 $GOROOT/bin,如果你使用的是 Go 1.0.3 及以后的版本,一般情况下你可以将它的值设置为空,Go 将会使用前面提到的默认值。

Go 编译器支持交叉编译,也就是说你可以在一台机器上构建运行在具有不同操作系统和处理器架构上运行的应用程序,也就是说编写源代码的机器可以和目标机器有完全不同的特性(操作系统与处理器架构)。

为了区分本地机器和目标机器,你可以使用 $GOHOSTOS$GOHOSTARCH 设置目标机器的参数,这两个变量只有在进行交叉编译的时候才会用到,如果你不进行显示设置,他们的值会和本地机器($GOOS$GOARCH)一样。

$GOPATH 默认采用和 $GOROOT 一样的值,但从 Go 1.1 版本开始,你必须修改为其它路径。它可以包含多个包含 Go 语言源码文件、包文件和可执行文件的路径,而这些路径下又必须分别包含三个规定的目录:src、pkg 和 bin,这三个目录分别用于存放源码文件、包文件和可执行文件。

$GOARM 专门针对基于 arm 架构的处理器,它的值可以是 56,默认为 6$GOMAXPROCS 用于设置应用程序可使用的处理器个数与核数。

你可能感兴趣的:(go语言)