Go进阶之路——基础了解

ps:来源于Go官方文档及个人总结

简介

Go 编程语言是一个开源项目,它使程序员更具生产力。

Go 语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。 Go 代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。 它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。

特色

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

入门

常规操作试手:

package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界")
}

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My favorite number is", rand.Intn(10))
}

每个 Go 程序都是由包组成的。

程序运行的入口是包 `main`。

这个程序使用并导入了包 "fmt" 和 `"math/rand"`。

按照惯例,包名与导入路径的最后一个目录一致。例如,`"math/rand"` 包由 package rand 语句开始。

如上代码中,Intn从默认Source返回[0,n)中的非负伪随机数作为int。如果n <= 0,则panics(相当于java 中的Exception)。

注意: 这个程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字。 (为了得到不同的数字,需要生成不同的种子数。参阅 rand.Seed) 

ps:关于Go的随机数问题参考https://www.cnblogs.com/logo-fox/p/7396710.html

导入

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Printf("Now you have %g problems.", math.Nextafter(2, 3))
}

这个代码用圆括号组合了导入,这是“打包”导入语句。

同样可以编写多个导入语句,例如:

import "fmt"
import "math"

不过使用打包的导入语句是更好的形式。

如上代码中,对于%g,它是唯一标识该值所需的最少位数,如102.00则为102。%.3g精度设置最大的有效位为3,如1.235则1.24(有趣的是当数字为1.335时结果为1.33,这似乎需要再去了解其底层实现机制 此处留疑问)。详细查看https://golang.org/pkg/fmt/

 

对于math.Nextafter(x,y), 参数x到参数y的方向上,下一个可表示的数值;如果x==y将返回x。

math.Nextafter(2,3)返回的是 2.0000000000000004 ,为什么不是2.0000000000000001这与64为能表示的浮点数有关。详细可参考https://ask.csdn.net/questions/1016639

导出名

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.pi)
}

在导入了一个包之后,就可以用其导出的名称来调用它。

在 Go 中,首字母大写的名称是被导出的。

Foo 和 FOO 都是被导出的名称。名称 foo 是不会被导出的。

执行如上代码是会报错的,需将 math.pi 改名为 math.Pi

 

你可能感兴趣的:(Go)