Go 语言关键字汇总

目录

Go 语言关键字汇总

一、包管理相关关键字

二、导入包关键字

三、变量和常量定义关键字

四、函数相关关键字

五、控制流关键字

六、数据类型关键字

七、并发相关关键字

八、错误处理关键字


在 Go 语言中,关键字是具有特定用途和含义的保留字,它们不能被用作变量名、函数名或其他标识符。以下是对 Go 语言关键字的汇总介绍。

一、包管理相关关键字

  1. package:用于定义一个包,它是 Go 语言组织代码的基本单元。每个 Go 程序都是由包组成的,一个包可以包含多个文件。
   package main

   import "fmt"

   func main() {
       fmt.Println("Hello, World!")
   }

二、导入包关键字

  1. import:用于导入其他包,以便在当前程序中使用其中的函数、类型和变量等。可以导入标准库中的包,也可以导入第三方或自定义的包。
   package main

   import (
       "fmt"
       "math"
   )

   func main() {
       fmt.Println(math.Pi)
   }

三、变量和常量定义关键字

  1. const:用于定义常量,常量在程序运行期间不能被修改。
   package main

   import "fmt"

   const PI = 3.14159

   func main() {
       fmt.Println(PI)
   }

  1. var:用于声明变量,可以在函数内部或包级别声明变量
   package main

   import "fmt"

   var name string = "Alice"

   func main() {
       fmt.Println(name)
   }

四、函数相关关键字

  1. func用于定义函数,函数是 Go 语言中可执行的代码块,用于实现特定的任务
   package main

   import "fmt"

   func add(a int, b int) int {
       return a + b
   }

   func main() {
       result := add(3, 4)
       fmt.Println(result)
   }

  1. return用于从函数中返回一个或多个值。
   package main

   import "fmt"

   func divide(a int, b int) (int, bool) {
       if b == 0 {
           return 0, false
       }
       return a / b, true
   }

   func main() {
       result, ok := divide(10, 2)
       if ok {
           fmt.Println(result)
       } else {
           fmt.Println("Division by zero")
       }
   }

五、控制流关键字

  1. ifelse用于条件判断,根据条件执行不同的代码块。
   package main

   import "fmt"

   func main() {
       age := 18
       if age >= 18 {
           fmt.Println("Adult")
       } else {
           fmt.Println("Minor")
       }
   }

  1. for:用于循环执行一段代码,可以用于遍历数组、切片、映射等数据结构,也可以用于普通的循环。
   package main

   import "fmt"

   func main() {
       for i := 0; i < 5; i++ {
           fmt.Println(i)
       }
   }

  1. switchcase:用于多分支选择,根据不同的条件执行不同的代码块。
   package main

   import "fmt"

   func main() {
       day := "Monday"
       switch day {
       case "Monday":
           fmt.Println("It's Monday")
       case "Tuesday":
           fmt.Println("It's Tuesday")
       default:
           fmt.Println("Other day")
       }
   }

  1. break:用于跳出循环或switch语句。
   package main

   import "fmt"

   func main() {
       for i := 0; i < 10; i++ {
           if i == 5 {
               break
           }
           fmt.Println(i)
       }
   }

  1. continue:用于跳过当前循环的剩余部分,直接进入下一次循环。
   package main

   import "fmt"

   func main() {
       for i := 0; i < 10; i++ {
           if i%2 == 0 {
               continue
           }
           fmt.Println(i)
       }
   }

六、数据类型关键字

  1. interface用于定义接口,接口是一组方法的签名,它定义了一个类型应该具有的行为。
   package main

   import "fmt"

   type Shape interface {
       Area() float64
   }

   type Circle struct {
       radius float64
   }

   func (c Circle) Area() float64 {
       return 3.14 * c.radius * c.radius
   }

   func main() {
       c := Circle{radius: 5}
       var s Shape = c
       fmt.Println(s.Area())
   }

  1. struct:用于定义结构体,结构体是一种自定义的数据类型,可以包含多个不同类型的字段。
   package main

   import "fmt"

   type Person struct {
       name string
       age  int
   }

   func main() {
       p := Person{name: "Alice", age: 30}
       fmt.Println(p)
   }

  1. map:用于创建映射,映射是一种无序的键值对集合,通过键来快速访问对应的值。
   package main

   import "fmt"

   func main() {
       m := map[string]int{"apple": 5, "banana": 3}
       fmt.Println(m["apple"])
   }

  1. chan:用于创建通道,通道是一种用于在不同的 goroutine 之间进行通信的机制。
   package main

   import "fmt"

   func main() {
       ch := make(chan int)
       go func() {
           ch <- 42
       }()
       value := <-ch
       fmt.Println(value)
   }

七、并发相关关键字

  1. go:用于启动一个新的 goroutine,goroutine 是一种轻量级的线程,可以在不阻塞主线程的情况下执行并发任务。
   package main

   import (
       "fmt"
       "time"
   )

   func task() {
       fmt.Println("Task running")
   }

   func main() {
       go task()
       time.Sleep(time.Second)
   }

  1. select:用于在多个通道上进行选择操作,可以等待多个通道的操作完成。
   package main

   import (
       "fmt"
       "time"
   )

   func main() {
       ch1 := make(chan string)
       ch2 := make(chan string)

       go func() {
           time.Sleep(2 * time.Second)
           ch1 <- "Message from ch1"
       }()

       go func() {
           time.Sleep(3 * time.Second)
           ch2 <- "Message from ch2"
       }()

       select {
       case msg1 := <-ch1:
           fmt.Println(msg1)
       case msg2 := <-ch2:
           fmt.Println(msg2)
       }
   }

八、错误处理关键字

  1. defer:用于延迟执行一个函数,通常用于在函数返回之前执行一些清理操作,如释放资源、关闭文件等。
   package main

   import "fmt"

   func main() {
       defer fmt.Println("Deferred statement")
       fmt.Println("Normal statement")
   }

  1. panicrecover:用于处理程序中的异常情况。panic用于抛出一个异常,导致程序终止执行;recover用于捕获panic抛出的异常,使程序可以继续执行。
   package main

   import "fmt"

   func main() {
       defer func() {
           if r := recover(); r!= nil {
               fmt.Println("Recovered from panic:", r)
           }
       }()
       panic("Something went wrong")
   }

这些关键字在 Go 语言中起着至关重要的作用,掌握它们的用法对于编写高效、可靠的 Go 程序至关重要。在使用关键字时,需要注意遵循 Go 语言的语法规则和命名规范,以确保程序的正确性和可读性。

引用\[1\]中提到,GO语言关键字"chan"用于定义通道(channel)。通道是一种用于在协程(goroutine)之间传递数据的机制,类似于消息队列。在GO语言中,可以使用关键字"chan"来声明通道变量,例如"var ch chan string"。通道可以是无缓冲的(阻塞型通道)或有缓冲的(缓冲型通道)。无缓冲的通道在接收数据前会阻塞发送方,直到有接收方准备好接收数据。有缓冲的通道可以在缓冲区未满时发送数据,而不会阻塞发送方。\[1\] 在引用\[2\]中的示例代码中,可以看到使用了关键字"chan"来定义了两个通道变量c1和c2。这些通道用于在并行协程中传递数据。通过使用关键字"select",可以选择等待多个通道操作,从而实现并发的控制流程。在示例代码中,使用了"select"来等待c1和c2通道的值,并根据接收到的值进行相应的处理。\[2\] 综上所述,关键字"chan"在GO语言中用于定义通道,通道是一种用于在协程之间传递数据的机制,可以通过关键字"select"来选择等待多个通道操作。 #### 引用[.reference_title] - *1* *2* *3* [go语言的25个关键字(基础)](https://blog.csdn.net/Zoffan/article/details/123028545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值