简单易懂的Go语言教程
Go语言是一种由Google开发的编程语言,它的出现主要是为了解决C++和Java的缺点,具有高并发能力和优秀的性能,同时也具有简单易懂、语法简洁等特点,被广泛应用于云计算、容器化等领域。
本篇文章将介绍Go语言的基础语法以及常用的库函数和并发操作。
一、基础语法
1. 变量
在Go语言中,变量必须先声明后使用,可以使用var或:=关键字来进行变量声明。其中:=是一种简写形式,可以同时完成变量的声明和赋值。
示例代码:
```
var i int // 声明变量i,类型为int
i = 10 // 给变量i赋值为10
j := 20 // 简写形式,声明变量j并赋值为20
```
2. 数据类型
Go语言中的数据类型包括整型、浮点型、布尔型、字符串和指针等。
示例代码:
```
var i int // 整型
var f float32 // 浮点型
var b bool // 布尔型
var s string // 字符串
var p *int // 指针类型
```
3. 控制语句
Go语言中的控制语句包括if、for和switch等。
if语句用于条件判断,可以配合else和else if语句使用。
示例代码:
```
if i > j {
fmt.Println("i > j")
} else if i < j {
fmt.Println("i < j")
} else {
fmt.Println("i = j")
}
```
for语句用于循环操作,可以使用break和continue关键字控制循环的流程。
示例代码:
```
for i := 0; i < 10; i++ {
if i == 5 {
break // 终止循环
}
if i == 3 {
continue // 跳过本次循环
}
fmt.Println(i)
}
```
switch语句用于多条件选择,可以配合case和default语句使用。
示例代码:
```
switch i {
case 1:
fmt.Println("i = 1")
case 2:
fmt.Println("i = 2")
default:
fmt.Println("i is not 1 or 2")
}
```
4. 函数
Go语言中的函数可以返回多个值,在函数名和参数列表之间声明返回类型。函数可以作为参数传递给其他函数,也可以被其他函数作为返回值调用。
示例代码:
```
func add(a int, b int) (int, error) {
if a < 0 || b < 0 {
return 0, errors.New("a or b is less than 0")
}
return a + b, nil
}
func main() {
res, err := add(1, 2)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res)
}
```
二、常用库函数
1. fmt
Go语言中的fmt库提供了格式化输出和输入的函数,常用的函数包括Println、Printf、Scanln和Scanf等。
示例代码:
```
fmt.Println("Hello world!")
fmt.Printf("i = %d, f = %f, s = %s\n", i, f, s)
fmt.Scanln(&i, &f, &s)
```
2. strings
Go语言中的strings库提供了字符串相关的操作函数,常用的函数包括Contains、Join、Split等。
示例代码:
```
fmt.Println(strings.Contains("hello world", "world"))
fmt.Println(strings.Join([]string{"hello", "world"}, " "))
fmt.Println(strings.Split("hello,world", ","))
```
3. strconv
Go语言中的strconv库提供了字符串和基本数据类型之间的转换函数,常用的函数包括Atoi、Itoa、ParseFloat等。
示例代码:
```
i, _ := strconv.Atoi("100")
s := strconv.Itoa(100)
f, _ := strconv.ParseFloat("3.14", 64)
```
三、并发操作
Go语言具有高并发的特点,可以使用goroutine和channel来进行并发操作。
1. goroutine
goroutine是Go语言中的轻量级线程,可以在程序中创建多个并发执行的任务。使用go关键字后跟函数调用语句即可启动一个新的goroutine。
示例代码:
```
func printNum() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
func main() {
go printNum()
fmt.Println("Hello world!")
time.Sleep(time.Second) // 防止程序过早退出
}
```
2. channel
channel是Go语言中的通信机制,可以用于在多个goroutine之间传递数据。使用make函数创建一个channel,并通过<-符号进行发送和接收操作。
示例代码:
```
func send(ch chan<- int) {
for i := 0; i < 10; i++ {
ch <- i
}
close(ch) // 关闭channel
}
func recv(ch <-chan int) {
for {
if num, ok := <- ch; ok {
fmt.Println(num)
} else {
break
}
}
}
func main() {
ch := make(chan int)
go send(ch)
recv(ch)
}
```
以上就是简单易懂的Go语言教程,希望能对读者有所帮助。在实际开发中,建议多尝试使用Go语言的高并发和优秀性能特点,开发出更加高效、可靠的应用程序。