写在前面
感觉荒废了很长一段时间,最近才看到有要求写文档,希望借此可以巩固知识。如果有什么错误,请多多指教。
Go语言的变量类型
总体来说,Go语言中变量的类型与C语言十分类似,主要有以下几种类型:
- 数值类型,包括整数类型和浮点数类型
- 布尔类型
- 字符类型
- 字符串类型,必须用双引号
" - 指针类型
在变量转换时,也需要十分谨慎:
- 所有类型的转换必须显式声明,比如
a :=10.24
b :=int(a) - 转换时最好从取值范围小的类型转换到取值范围大的类型,不然容易发生精度丢失
- 不同底层类型的变量在类型转换时容易引发编译错误,比如把int32类型转换成string类型,但是int16转换成int32就不会发生类似的错误。
变量的声明
在Go语言中,主要有两种声明变量的方式。
一种是采用var:
var VarietyName VarietyType
值得注意的是,变量的类型在变量的名称之后,后面可以直接紧跟变量的值:
var a int = 1
当然,也可以通过输入变量值的方式让电脑自己识别变量的类型:
var b = 'init'
另一种是采用“:=”的方式来声明变量:
c := 1024
这种方式虽然简便,但是它不能提供数据的具体类型,比如当我想在上式中把 c 定义为float32的类型就难以实现;同时这种声明方式只能用在函数内部。
在变量声明时,不要使用以下的关键字:
| break | default | func | interface | select |
| case | defer | go | map | struct |
| chan | else | goto | package |switch |
| const | fallthrough | if | range | type |
| continue | for | import | return | var |
分支结构
var num int = 666
if num > 10 {
fmt.printf("num>10")
} else {
fmt.printf("num<10")
}
以上面为例来说明:
总体和C语言非常类似,但是使用时要注意以下几点:
- if后面的条件语句不用加括号
- 必须使用大括号
{} - 关键字if和else之后的大括号
{必须和关键字在同一行
循环结构
sum := 0
for {
sum++
if sum >10 {
break
}
}
同样以上面的例子来说明: 总体和C语言也十分类似,使用时也需要注意以下几点:
- Go语言中的循环结构只能使用for,不能使用while结构和do—while结构
- 常常使用break和continue来控制循环
函数
函数编写的DRY原则:
Do no repeat yourself .意思是执行特定任务的代码只能在程序里出现一次。
func hypot(x,y int32) float32 {
return math.Sqrt(x*x+y*y)
}
fmt.Printf(hypot(3,4))
同样的,以上面简单的例子来说明:
- 和变量定义类似,函数的返回值类型应该放在函数名之后
- Go 语言支持多个返回值。在实际中,经常返回两个值,一个实际需要的参数值,另一个错误信息,从而来维护程序的安全稳定
结构体
值得注意的是,Go语言中既没有C++“类”的概念,也不支持“类”的继承等面向对象的概念。同时,在Go语言中,不仅结构体能拥有方法,而且每种自定义类型也可以拥有自己的方法。
type point struct {
x int
y int
}
结构体的定义与C语言非常类似,这里就不再赘述。