基础语法
1. 包声明
使用package关键字来声明包名,一个Go程序通常由多个包组成。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
2. 导入包
使用import关键字来导入其他包,以便在当前程序中使用其功能。
import "fmt"
3. 函数
使用func关键字来定义函数,函数可以带有参数和返回值。
func add(a, b int) int {
return a + b
}
result := add(3, 4)
fmt.Println(result)
4. 变量声明
使用var关键字来声明变量,可以指定变量的类型或让编译器自动推断类型。
var name string // 声明一个字符串类型的变量
name = "John" // 赋值
age := 25 // 声明并初始化一个整数类型的变量
5. 常量声明
使用const关键字来声明常量,常量的值在声明后不能修改。
const (
apple = "Apple"
banana = "Banana"
orange = "Orange"
)
6. 控制流语句
包括条件语句(if-else)、循环语句(for、while)、switch语句等。
if age >= 18 {
fmt.Println("成年人")
} else {
fmt.Println("未成年人")
}
for i := 0; i < 5; i++ {
fmt.Println(i)
}
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Println(index, value)
}
7. 数据类型
Go语言提供了基本数据类型,如整型、浮点型、布尔型,以及复合数据类型,如数组、切片、映射、结构体等。
8. 指针
可以使用&操作符获取变量的地址,使用*操作符来访问指针指向的值。
var num int = 10
var ptr *int
ptr = &num
9. 结构体
使用type关键字来定义自定义的结构体类型,结构体可以包含不同类型的字段。
type Person struct {
name string
age int
}
person := Person{name: "Rainy", age: 25}
fmt.Println(person.name, person.age)
10. 接口
使用interface关键字来定义接口,接口指定了一组方法的签名,实现了这些方法的类型被认为实现了该接口。
type Shape interface {
Area() float64
Perimeter() float64
}
11. 并发
Go语言通过goroutine和channel提供了原生的并发支持,可以方便地编写并发程序。
12. Go标记
Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:
fmt
.
Println
(
"Hello World!"
)
13.行分隔符
Go程序中通常一行代表一个语句结束,无需使用分号;结尾,但如果要将多个语句写在同一行,则需要使用分号;进行人为区分。
14.注释
注释不会被编译,每一个包应该有相关注释。
单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。
例如:
//单行注释
/*
我是多行注释
go
*/
15.标识符
标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母数字、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。
以下是有效的标识符:
mahesh kumar abc move_name a_123
myname50 _temp j a23b9 retVal
以下是无效的标识符:
- 1ab(以数字开头)
- case(Go 语言的关键字)
- a+b(运算符是不允许的)
16.字符串的连接
Go语言的字符串连接可以用+实现。 例如:
package main
import "fmt"
func main{
fmt.Println("name" + "gender")
}
17.关键字
break,default,func,interface,select等。
18.Go语言中的空格
在 Go 语言中,空格通常用于分隔标识符、关键字、运算符和表达式,以提高代码的可读性。
Go 语言中变量的声明必须使用空格隔开,如:
var x int
const Pi float64 = 3.14159265358979323846
在运算符和操作数之间要使用空格能让程序更易阅读:
无空格:
fruit=apples+oranges;
在变量与运算符间加入空格,程序看起来更加美观,如:
vegetables =cabbages+eggplants ;
在关键字和表达式之间要使用空格。
例如:
if x > 0 {
// do something
}
在函数调用时,函数名和左边等号之间要使用空格,参数之间也要使用空格。
例如:
result := add(2, 3)
常用特性
1. 并发编程
Go语言通过goroutine和channel提供了轻量级的并发编程模型。goroutine是一种协程,可以高效地并发执行任务,而channel用于协程之间的通信和同步数据。
2. 垃圾回收机制
Go语言拥有自动垃圾回收机制,开发者无需手动管理内存,减轻了内存管理的负担,提高了开发效率。
3. 快速编译
Go语言的编译速度非常快,可以在短时间内编译大型程序,加快了开发迭代的速度。
4. 内置的并发安全
Go语言的标准库中提供了许多并发安全的数据结构和函数,如sync包中的锁和条件变量,使得编写并发安全的程序变得更加简单和可靠。
5. 内存安全
Go语言对内存的管理非常严格,使用了内存安全的指针和切片,避免了常见的内存错误,如空指针引用和越界访问。
6. 强类型和静态类型
Go语言是一种强类型和静态类型的语言,编译器会在编译时进行类型检查,提前捕获一些错误,并提供更好的代码可读性和可维护性。
7. 丰富的标准库
Go语言的标准库提供了许多强大且易于使用的功能和工具,包括网络编程、文件操作、加密、并发编程等领域,方便开发者进行快速开发。
8. 跨平台支持
Go语言可以编译生成可执行文件,支持跨平台运行,开发者可以轻松地在不同操作系统上部署和运行Go程序。
3.小结
学习Go语言的基础语法和常用特性是一种启发式的过程,能够帮助开发者更快地编写高质量的代码。Go语言的设计理念和特性使得它成为一门强大而适用的语言,能够应对各种不同类型的项目和需求。