Go 语言,也被称为 Golang,是一门由 Google 开发的编程语言。它恢复简洁的语法和高效的性能在近年来迅速增长的镰刀尖角。本篇笔记将介绍 Go 语言的基础语法和常用功能,帮助初学者更好地理解和入门这门语言。
-
语法简洁: Go语言的语法设计十分简洁清晰,增强了代码的可靠性和易于维护。以下是一些基本的语法特点:
-
强类型语言: Go是一门强类型的Smashing语言,必须每个变量在声明时都指定其类型。这有助于减少隐式类型转换带来的错误。
-
垃圾回收: Go语言内置了垃圾回收机制,开发者无需手动管理内存。这有助于减少内存泄漏和其他内存相关的问题。
-
并发支持: Go语言在语言级别上提供了轻量级的并发支持,通过goroutine和channel实现。这使得编写的并发程序变得更加容易。
-
变量和数据类型: Go语言的变量声明使用关键字
var,例如:var num int。支持的基本数据类型有整数类型(int、int8、int16、int32、int64)、浮点数类型(float32、float64)、布尔类型(bool)、字符串类型(string)等。报表变量时可以直接赋初值,例如:var name string = "John"。 -
基本数据类型和变量声明
Go语言拥有常见的基本数据类型,如整型、浮点型、布尔型等。变量声明可以使用短变量声明操作符“:=”,同时还支持常量的定义和枚举类型。
func main() {
package main
import "fmt"
func main() {
var num int = 42
str := "Hello, Go!"
const pi float64 = 3.14159
fmt.Println(num, str, pi)
}
整形
整形分为以下两大类
- 按长度分为:int8,int16,int32,int64
- 对应的无符号整型:uint8,uint16,uint32,uint64.
其中uint8就是byte类型,int16对应c中的short型,int64对应c语言中的long型。
浮点型
Go语言提供了两种精度的浮点数 float32 和 float64
这些浮点数类型的取值范围可以从很微小到很巨大。浮点数取值范围的极限值可以在 math 包中找到:
- 常量 math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38;
- 常量 math.MaxFloat64 表示 float64 能取到的最大数值,大约是 1.8e308;
- float32 和 float64 能表示的最小值分别为 1.4e-45 和 4.9e-324。
布尔型
布尔型数据在Go语言中意bool类型进行声明,布尔类型数据只有ture和false两个值
一元操作符!对应逻辑非操作,因此!true的值为 false
- 控制流和循环
Go语言支持传统的控制流语句,如条件语句(if-else)、循环语句(for)、以及开关语句(switch)。
func main() {
package main
import "fmt"
func main() {
age := 18
if age >= 18 {
fmt.Println("成年人")
} else {
fmt.Println("未成年人")
}
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
switch day := 3; day {
case 1:
fmt.Println("周一")
case 2:
fmt.Println("周二")
default:
fmt.Println("其他日子")
}
4. 函数和包
函数是Go语言的基本构建块,通过关键字"func"定义。Go支持多返回值的函数,函数可以作为参数传递给其他函数,也可以匿名定义为闭包。
package main
import "fmt"
func add(a, b int) int {
return a + b
func main() {
result := add(3, 5)
fmt.Println(result)
5 结构体
Go语言支持自定义类型,其中最常用的是结构体。结构体允许将不同类型的字段组合成一个自定义类型。
package main
import "fmt"
type Person struct {
Name
Name
string
Age int
}
func main() {
person := Person{Name:
person := Person
person :=
"Bob", Age: 25}
fmt.Printf(
fmt.Printf
"Name: %s, Age: %d\n", person.Name, person.Age)
}
6.切片和映射
切片和映射是Go语言中的两个重要数据结构,用于处理集合数据。示例:
package main
import "fmt"
func main() {
// 切片
nums := []int{1, 2, 3, 4, 5}
fmt.Println("Slice:", nums[1:3])
// 映射
scores :=
scores :=
scores
map[string]int{"Alice": 95, "Bob": 85, "Carol": 70}
fmt.Println(
fmt.Println
"Score for Alice:", scores["Alice"])
}
7.并发
Go语言在语言级别支持并发编程,使用协程(goroutine)来实现轻量级线程。
package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf(
fmt
"%d ", i)
time.Sleep(time.Millisecond * 500)
}
}
func printLetters() {
for char := 'a'; char <= 'e'; char++ {
fmt.Printf("%c ", char)
time.Sleep(time.Millisecond *
time 400)
}
}
func main() {
go printNumbers()
go printLetters()
time.Sleep(time.Second *4)
}
总结
本文介绍了Go语言的基础语法和常用特性,涵盖了包、变量、控制流、函数、结构体、切片、映射和并发等方面。这只是一个入门指南,希望能为初学者提供一个良好的起点。随着对Go语言的深入学习,您将能够更好地掌握这门强大的编程语言,并将其应用于各种实际项目中。