Go入门基础 | 青训营

168 阅读4分钟

一、简介

Go语言(也称为Golang)是一种开源编程语言,由Google于2007年开始开发,并在2009年正式发布。它的设计目标是提供简洁、高效、可靠的软件开发方式。

二、Go语言的优势

  1. 简洁易学:Go语言的语法相对简单,易于学习和理解。它摒弃了许多复杂的特性和语法糖,使得代码更加清晰和易于维护。
  2. 并发支持:Go语言内置了轻量级的并发模型,称为goroutine和channel。这使得编写并发程序变得非常简单,可以有效地利用多核处理器。
  3. 高效性能:Go语言通过使用垃圾回收机制、即时编译和优化等技术,具有出色的运行时性能。它还提供了原生的并发支持,可以轻松处理大规模并发任务。
  4. 内置工具:Go语言附带了许多内置的工具,如格式化工具、测试工具和性能分析工具等,方便开发者进行代码管理和性能优化。
  5. 跨平台:Go语言可以在多个操作系统上运行,包括Windows、Linux和Mac等。这使得开发人员可以更方便地编写跨平台的应用程序。
  6. 强大的标准库: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
// 声明一个整数变量并初始化为30
var age int = 30 
//声明变量并赋值,进行自动类型推断
var name = "tom"
//:=  表示声明的同时赋值,=只是赋值功能
num := 100
// 实现交换m,n的值
m := 2 
n := 3 
m,n = n,m 
// a, b, c 同时声明
var a, b, c int
// a,b, c 同时赋值
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语句

//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") 
}
//switch后不指定表达式,类似switch true,而是在case里判断
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)

//去掉break就是死循环  
for {  
    fmt.Println("11")  
    break  
}  
//只能用i++,不能使用++i  
for i := 0; i < 5; i++ {  
    fmt.Println(i)  
}  
  
var j int = 0  
for j <= 3 {  
    fmt.Println(j)  
    j++  //golang中只提供了j++,   ++j是非法的
}