GO语句和关键字

点击名片关注 阿尘blog,一起学习,一起成长

本文主要分享Go语言的一些常用语句和关键字!

GO 控制语句

1 for语句

for语句是GO语言中的最常用的语句,表达式如下

for 初始语句;条件语句;后续语句{
    //循环体
}

初始语句在循环开始前执行一次,用于初始化循环变量

条件语句,每次循环进行判断,为TRUE就继续

后续语句,每次循环结束后执行,用于更新循环变量

2 Switch语句

switch语句用于根据不同的条件执行不同的代码块

switch 表达式 {
    case 表达式1:
        //执行代码块1
    case 表达式2:
        //执行表达式2
    ...
    default:
        //执行默认代码块
}

3 fallthrough关键字

fallthrough关键字是switch语句中开支代码流向的语句

case后面的代码执行完就会跳出switch,不再执行其他case,如果加上了fallthrough,程序执行完case继续执行下一个case,不用判断条件

package main  

import "fmt"  

func main() {  
    x := 2  

    switch x {  
    case 1:  
        fmt.Println("x is 1")  
    case 2:  
        fmt.Println("x is 2")  
        fallthrough // 执行下一个case分支  
    case 3:  
        fmt.Println("x is 3")  
    default:  
        fmt.Println("x is not 1, 2, or 3")  
    }  
}

4 if 语句

这个就不多说了

if condition {
    // 当condition为true时执行的代码
} else if anotherCondition {
    // 当condition为false,但anotherCondition为true时执行的代码
} else {
    // 当上述所有条件都为false时执行的代码
}

5 25个关键字的简单说明和举例

Go语言的常用关键字及其作用如下:

break:用于终止循环或switch语句,并继续执行后续的代码。

case:在switch语句中用于指定一个或多个可能的条件。

chan:用于定义通道(channel),它是Go语言中用于在goroutine之间进行通信的机制。

const:用于声明常量,即不可变的值。

continue:用于跳过当前循环的剩余部分,并直接开始下一次迭代。

default:在switch语句中,当所有case条件都不满足时,执行default子句。

defer:用于延迟执行一个函数调用,通常用于清理资源或执行一些需要在函数返回前完成的逻辑。

else:与if语句一起使用,当if条件不满足时执行else子句。

fallthrough:在switch语句中,用于指示程序继续执行下一个case子句,而不是跳出switch语句。

for:用于开始一个for循环,它可以是传统的循环(带有初始化、条件和后置语句),也可以是range循环,用于迭代数组、切片、映射等。

func:用于声明函数或方法。

go:用于启动一个新的goroutine,它是Go语言中实现并发的方式之一。

goto:用于无条件地跳转到程序中指定的行,通常与标签(label)一起使用。

if:用于条件判断,根据条件是否满足执行不同的代码块。

import:用于导入外部包(package),以便在当前文件中使用包中提供的函数、变量等。

interface:用于声明一个接口,接口指定了一组方法,任何实现了这些方法的类型都被认为实现了该接口。

map:用于声明一个映射(map),映射是一个无序的键值对集合。

package:用于声明当前文件的所属包,包是Go语言中的代码组织方式。

range:用于迭代数组、切片、映射等集合类型的元素。

return:用于从函数中返回一个或多个值。

select:用于在多个通信操作中选择可用的操作,通常与通道(channel)一起使用。

struct:用于声明一个结构体类型,结构体可以包含多个字段,每个字段都有名称和类型。

type:用于声明自定义类型,可以是基于现有类型的别名类型,也可以是结构体、接口等复合类型。

var:用于声明变量,并可以指定变量的类型和初始值。

这些关键字在Go语言中扮演着重要的角色,它们帮助程序员编写结构清晰、易于理解的代码,并实现各种控制流程、并发和类型安全等特性。需要注意的是,Go语言的关键字是保留的,不能用作变量名、函数名或其他标识符。

package main

import (
    "fmt"
    "time"
)

// 定义一个简单的结构体
type Person struct {
    Name string
    Age  int
}

// 定义一个函数,用于模拟长时间运行的任务
func longRunningTask() {
    time.Sleep(2 * time.Second)
    fmt.Println("Long running task completed!")
}

func main() {
    // 使用var关键字声明变量
    var name string = "Alice"
    var age int = 30

    // 使用const关键字声明常量
    const pi = 3.14

    // 使用type关键字定义自定义类型
    type MyMap map[string]int
    myMap := MyMap{
        "apple":  5,
        "banana": 10,
    }

    // 使用func关键字声明函数
    fmt.Println("Hello, World!")
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
    fmt.Println("Pi:", pi)
    fmt.Println("My Map:", myMap)

    // 使用if关键字进行条件判断
    if age >= 18 {
        fmt.Println("Adult")
    } else {
        fmt.Println("Teenager")
    }

    // 使用for关键字进行循环
    for i := 0; i < 5; i++ {
        fmt.Println("Loop iteration:", i)
    }

    // 使用range关键字迭代map
    for fruit, count := range myMap {
        fmt.Println("Fruit:", fruit, "Count:", count)
    }

    // 使用select和chan进行通信
    ch := make(chan string)
    go func() {
        time.Sleep(1 * time.Second)
        ch <- "Message from goroutine"
    }()

    select {
    case msg := <-ch:
        fmt.Println("Received:", msg)
    case <-time.After(3 * time.Second):
        fmt.Println("Timeout waiting for message")
    }

    // 使用defer关键字延迟执行
    defer fmt.Println("World")
    fmt.Println("Hello")

    // 使用struct关键字定义结构体并创建实例
    person := Person{Name: "Bob", Age: 25}
    fmt.Println("Person:", person.Name, person.Age)

    // 使用interface关键字定义接口
    type Shape interface {
        Area() float64
    }

    // 实现接口的矩形结构体
    type Rectangle struct {
        Width  float64
        Height float64
    }

    // 实现Area方法
    func (r Rectangle) Area() float64 {
        return r.Width * r.Height
    }

    // 使用switch关键字进行多路选择
    shape := Rectangle{Width: 3, Height: 4}
    switch s := shape.(type) {
    case Shape:
        fmt.Println("Area of shape:", s.Area())
    default:
        fmt.Println("Unknown shape")
    }

    // 使用fallthrough关键字在switch中执行下一个case
    grade := "B"
    switch grade {
    case "A":
        fmt.Println("Excellent!")
        fallthrough
    case "B", "C":
        fmt.Println("Well done!")
    default:
        fmt.Println("You need to work harder.")
    }

    // 使用goto关键字进行无条件跳转
    i := 0
    here := func() { fmt.Println("Here") }
    if i == 0 {
        goto label
    } else {
        here()
    }

label:
    fmt.Println("Label reached")

    // 使用package关键字声明包
    // (已经在文件开头声明,这里不再重复)

    // 使用import关键字导入包
    // (已经在文件开头导入,这里不再重复)

    // 使用const、chan、go、map、package、type、var等关键字已在上面示例中使用

    // 启动一个goroutine来执行长时间运行的任务
    go longRunningTask()

    // 等待足够的时间以便看到长时间运行任务的结果
    time.Sleep(3 * time.Second)
}

这个示例代码包含了Go语言中大部分关键字的用法。当然,有些关键字(如goto)在实际编程中并不常用,因为它们可能导致代码难以理解和维护。通常,建议尽量避免使用goto,并寻找其他更结构化的控制流程方法。同样,interface和type等关键字在更复杂的程序中会有更多的用法和场景。

欢迎大家一起交流学习!

扫描二维码关注阿尘blog,一起交流学习

ac60d5660adc753da406c5519ff66b02.png

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿尘呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值