简单易懂的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语言的高并发和优秀性能特点,开发出更加高效、可靠的应用程序。