一、简介
Go语言(也称为Golang)是一种开源编程语言,由Google于2007年开始开发,并在2009年正式发布。它的设计目标是提供简洁、高效、可靠的软件开发方式。
二、Go语言的优势
- 简洁易学:Go语言的语法相对简单,易于学习和理解。它摒弃了许多复杂的特性和语法糖,使得代码更加清晰和易于维护。
- 并发支持:Go语言内置了轻量级的并发模型,称为goroutine和channel。这使得编写并发程序变得非常简单,可以有效地利用多核处理器。
- 高效性能:Go语言通过使用垃圾回收机制、即时编译和优化等技术,具有出色的运行时性能。它还提供了原生的并发支持,可以轻松处理大规模并发任务。
- 内置工具:Go语言附带了许多内置的工具,如格式化工具、测试工具和性能分析工具等,方便开发者进行代码管理和性能优化。
- 跨平台:Go语言可以在多个操作系统上运行,包括Windows、Linux和Mac等。这使得开发人员可以更方便地编写跨平台的应用程序。
- 强大的标准库:Go语言拥有丰富而强大的标准库,涵盖了网络编程、文件操作、加密、数据库等多个领域,可以帮助开发者快速构建各种类型的应用程序。
三、Go语言基础语法
1、入门程序--打印HelloWorld
package main
import "fmt"
func main()
{
fmt.Println("HelloWorld")
}
- 第1行,用于声明包名。本例中是main包,main包是每个项目的入口。
- 第3行,使用关键字import导入Go语言提供的标准包fmt,该包用于打印输出
- 第5行,声明定义了一个函数main,func是定义函数的关键字,main函数是函数入口
- 第6行,使用fmt包的Println函数输出字符串 HelloWorld
2、数据类型
基本数据类型
- 整数类型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64。
- 浮点数类型:float32、float64。
- 复数类型:complex64、complex128。
- 布尔类型:bool。
- 字符串类型:string。
- 字节类型:byte(uint8的别名)。
- 字符类型:rune(int32的别名,用于表示Unicode字符)。
复合数据类型
- 数组类型:用于存储具有相同类型的固定长度元素序列。
- 切片类型:动态数组,可以根据需要自动扩展或缩小。
- 映射类型:键值对的集合。
- 结构体类型:自定义的复合数据类型,可以包含多个字段。
- 接口类型:一组方法签名的集合,用于实现多态性。
- 函数类型:将函数作为值进行传递和使用的类型。
- 通道类型:用于在并发编程中进行协程间的通信
3、变量与常量声明
变量
var a int
var age int = 30
var name = "tom"
num := 100
m := 2
n := 3
m,n = n,m
var a, b, c int
a,b,c = 1,2,3
常量
const total int = 1000
const name = "jerry"
4、if-else语句
if 1 == 1 {
fmt.Println(true)
}else{
fmt.Println(false)
}
if num := 10; num > 5 {
fmt.Println("num大于10")
}
5、switch语句
day := 3
switch day {
case 1: fmt.Println("Monday")
case 2: fmt.Println("Tuesday")
case 3: fmt.Println("Wednesday")
case 4: fmt.Println("Thursday")
case 5: fmt.Println("Friday")
case 6: fmt.Println("Saturday")
case 7: fmt.Println("Sunday")
default: fmt.Println("Invalid day")
}
age := 18
switch {
case age < 0:
fmt.Println("Invalid age")
case age < 18:
fmt.Println("You are a minor")
default:
fmt.Println("You are an adult")
}
6、for循环(golang中只提供了for,没有while)
for {
fmt.Println("11")
break
}
for i := 0; i < 5; i++ {
fmt.Println(i)
}
var j int = 0
for j <= 3 {
fmt.Println(j)
j++
}