基础语法
一个简单的Go语句如下:
fmt.Println("Hello, World!")
- 一行代表一个语句结束。每个语句不需以分号
;
结尾,但也不是像Python一样纯靠缩进来表示内容,出现多行代码时,需要用大括号{}进行包裹 - 标识符用来命名变量、类型等,其第一个字符必须是字母或下划线而不能是数字
- 备注格式与 C/C++ 相同
关键字
Go语言中的25个关键字或保留字:
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 |
以及36个预定义标识符:
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
数据类型
Go语言有以下几种数据类型:
- 布尔型:常量 true 或者 false。一个简单的例子:
var b bool = true
-
数字类型:整型 int 和浮点型 float,并且原生支持复数,其中位的运算采用补码。更详细的信息看文章末尾。
-
字符串类型:使用UTF-8编码标识Unicode文本
-
以及以下几种派生类型:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
变量
Go语言中声明变量使用var关键字:
var identifier type
声明变量的几种方式
1.声明时指定数据类型
var v_name v_type
2.根据值自行判定变量类型
var v_name = value
3.忽略var关键字
v_name := value
操作符:=
可以高效地创建一个新的变量,是使用变量的首选形式,但是只能被用在函数体内,不可以用于全局变量的声明与赋值。
4.多变量声明
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3
vname1, vname2, vname3 := v1, v2, v3
// 这种因式分解关键字的写法一般用于声明全局变量
var (
vname1 v_type1
vname2 v_type2
)
常量
常量的定义格式:
const identifier [type] = value
多个相同类型的声明可以简写为:
const c_name1, c_name2 = value1, value2
常量还可以用作枚举:
const (
Unknown = 0
Female = 1
Male = 2
)
iota,特殊常量,可以认为是一个可以被编译器修改的常量。每当 iota 在新的一行被使用时,它的值都会自动加 1。
运算符
Golang的运算符与大多数编程语言相同,就不多加累述了。有兴趣的可以浏览Go 语言操作符
条件语句
与大多数编程语言相似,Golang有if
,if...else
,if嵌套
,switch
等判断语句,还有一个特有的select
语句与switch语句相似。
例子:
if…else语句
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
switch语句
switch var1 {
case val1:
...
case val2:
...
default:
...
}
select语句
select {
case communication clause :
statement(s);
case communication clause :
statement(s);
/* 你可以定义任意数量的 case */
default : /* 可选 */
statement(s);
}
循环语句
Go语言中循环为for
语句,有三种形式
和 C 语言的 for 一样:
for init; condition; post { }
和 C 的 while 一样:
for condition { }
和 C 的 for(;;) 一样:
for { }
例子:
package main
import "fmt"
func main() {
var b int = 15
var a int
numbers := [6]int{1, 2, 3, 5}
/* for 循环 */
for a := 0; a < 10; a++ {
fmt.Printf("a 的值为: %d\n", a)
}
for a < b {
a++
fmt.Printf("a 的值为: %d\n", a)
}
for i,x:= range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
}