Go语言入门指南:基础语法和常用特性解析|青训营

76 阅读4分钟

Go 语言,也被称为 Golang,是一门由 Google 开发的编程语言。它恢复简洁的语法和高效的性能在近年来迅速增长的镰刀尖角。本篇笔记将介绍 Go 语言的基础语法和常用功能,帮助初学者更好地理解和入门这门语言。

  • 语法简洁: Go语言的语法设计十分简洁清晰,增强了代码的可靠性和易于维护。以下是一些基本的语法特点:

  • 强类型语言: Go是一门强类型的Smashing语言,必须每个变量在声明时都指定其类型。这有助于减少隐式类型转换带来的错误。

  • 垃圾回收: Go语言内置了垃圾回收机制,开发者无需手动管理内存。这有助于减少内存泄漏和其他内存相关的问题。

  • 并发支持: Go语言在语言级别上提供了轻量级的并发支持,通过goroutine和channel实现。这使得编写的并发程序变得更加容易。

  1. 变量和数据类型: Go语言的变量声明使用关键字var,例如:var num int。支持的基本数据类型有整数类型(int、int8、int16、int32、int64)、浮点数类型(float32、float64)、布尔类型(bool)、字符串类型(string)等。报表变量时可以直接赋初值,例如:var name string = "John"

  2. 基本数据类型和变量声明

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

  1. 控制流和循环

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语言的深入学习,您将能够更好地掌握这门强大的编程语言,并将其应用于各种实际项目中。