Go编程语言入门教程

5星 · 超过95%的资源 需积分: 4 10 下载量 113 浏览量 更新于2024-08-01 收藏 162KB DOC 举报
"Go编程语言教程" Go编程语言是一门为熟悉C或C++的程序员设计的教程。本文档旨在介绍Go语言的基础知识,但并不是一份详尽的语言指南,最接近这一目标的是官方的语言规范。在阅读完本教程后,读者可以进一步阅读《Effective Go》以深入了解Go语言的使用方式。此外,还提供了为期三天的Go语言课程的幻灯片:Day1、Day2和Day3。 教程通过一系列小型程序逐步展示Go语言的关键特性。所有程序在编写时都是可用的,并已存储在仓库的“doc/progs/”目录下。代码片段会标注原始文件中的行号,空白行保持为空,以保持整洁。 **Hello, World** 传统的编程教程通常以"Hello, World"程序开始。在Go语言中,这是如何实现的: ```go package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` 这里,`package main`定义了可执行程序的包,`main`函数是程序的入口点。`import "fmt"`引入了`fmt`包,它包含用于输入/输出操作的函数,如`Println`,用于在控制台打印文本。 **Semicolons** Go语言的语句结束通常不需要分号,但是编译器会自动在每行末尾插入分号。这使得源代码看起来更简洁,但也允许在一行内写多个语句。 **An I/O** `fmt`包提供了丰富的I/O功能,如`Println`用于简单打印,`Printf`则支持格式化输出。例如: ```go fmt.Printf("My name is %s, and I am %d years old.\n", "Alice", 25) ``` **Packages** Go语言强调模块化,程序由包组成。每个包有自己的命名空间,且可以导出(public)和不导出(private)的成员。导出的成员首字母大写,不导出的成员首字母小写。 **Types** Go语言有多种内置类型,如整型、浮点型、字符串和布尔型。此外,可以自定义复杂的数据结构,如结构体(struct),并创建基于这些类型的接口(interface)。 ```go type Person struct { Name string Age int } var person Person person.Name = "Bob" person.Age = 30 ``` **Allocation** Go语言有两种分配内存的方式:`new`和`make`。`new`用于分配值类型(如结构体),而`make`用于分配切片(slice)、映射(map)和通道(channel)。 **Constants** 常量(constants)在Go中是不可变的,可以是数值、字符串或布尔值。它们可以通过`const`关键字定义。 ```go const Pi = 3.14159 ``` **Multiplexing** Go语言支持并发编程,主要通过goroutines(轻量级线程)和通道(channels)。`go`关键字用于启动一个新的goroutine,通道用于在goroutines之间安全地传递数据。 ```go func sayHello() { fmt.Println("Hello") } go sayHello() ``` 以上只是Go语言的基础介绍,实际的Go编程还包括错误处理、反射、网络编程、文件操作等更多内容。随着对语言的深入学习,你会发现在Go中编写高效、可靠和并发友好的软件变得十分容易。