さあ、名前を付けることから始めましょう!Go のキーワードと識別子の完全なリスト、マニュアルとコード例!

TechLeadCloud をフォローして、インターネット アーキテクチャとクラウド サービス テクノロジーに関する完全な知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品の研究開発、チーム管理の経験があり、復旦大学同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud 認定の上級アーキテクトです。 、プロジェクト管理の専門家、AI 製品の研究開発で数億の収益を上げています。

ファイル

1. Goキーワードのリストと分類

導入

キーワードはプログラミング言語で事前に定義された一連の特別な単語であり、それぞれのキーワードには明確な機能と目的があります。Go プログラミング言語では、キーワードはプログラムの論理フレームワークを構築する役割を果たし、プログラムのセマンティクスと構造の基礎となります。この記事は、プログラミングにおける Go の重要性を理解するために、Go におけるキーワードの位置付けと適用を深く探ることを目的としています。Go 言語には、変数や関数の宣言からフロー制御や並行プログラミングに至るまで、さまざまな特定の目的に使用される 25 の定義済みキーワードがあります。

break, default, func, interface, select,
case, defer, go, map, struct,
chan, else, goto, package, switch,
const, fallthrough, if, range, type,
continue, for, import, return, var

Go におけるキーワードの位置付け

言語の基礎

キーワードはあらゆるプログラミング言語の基本的な構成要素であり、Go も例外ではありません。これらは、プログラム ロジックの記述、データ構造の定義、エラーの処理などのタスクを行うためのツールです。

シンプルさと効率性

Go 言語は、そのシンプルさと効率性で広く人気があります。これは主に、限られているものの高度に最適化されたキーワード セットによるものです。Go にはキーワードが 25 個しかなく、他のプログラミング言語に比べて比較的少ないですが、それぞれのキーワードには明確で重要な目的があります。

スケーラビリティと柔軟性

キーワード自体は固定されていますが、Go は高度なスケーラビリティと柔軟性を実現するさまざまな複合ステートメントと演算子を提供します。たとえば、if-else、for、switch キーワードを使用して複雑な論理構造を作成できます。

キーワードの分類

さまざまなコード要素を宣言する

キーワード 説明する
定数 1 つ以上の定数を宣言するために使用されます
機能 新しい関数を定義するために使用されます
輸入 外部パッケージをインポートするために使用されます
パッケージ パッケージ名を宣言するために使用され、通常は各 Go ソース ファイルの最初の行にあります。
タイプ 構造体、インターフェイス、エイリアスなどのカスタム タイプを宣言するために使用されます。
だった 1 つ以上の変数を宣言するために使用されます

複合型のリテラル表現

キーワード 説明する
ちゃん 新しいチャネル(チャネル)を宣言するために使用されます
インターフェース 新しいインターフェースを定義するために使用されます
地図 新しいマップ (キーと値のストア) を宣言するために使用されます。
構造体 新しい構造を定義するために使用されます

基本的なフロー制御構文

キーワード 説明する
壊す 現在のループまたはswitchステートメントを中断するために使用されます
場合 switchステートメント内の分岐
続く 現在のループ反復の残りのステートメントをスキップし、次の反復に入ります。
デフォルト switchステートメント内のデフォルトの分岐
それ以外 ifステートメントの否定分岐
フォールスルー ステートメントで使用されswitch、制御フローに次の実行を継続させます。case
のために ループ用
後藤 ラベルにジャンプ (非推奨)
もし 条件文
範囲 for配列、スライス、マップ、またはチャネルのループに使用されます
戻る 関数から値を返すために使用されます
選択する 複数のチャンネルを選択する場合
スイッチ 複数分岐の選択ステートメントに使用されます

コルーチンと遅延関数呼び出し

キーワード 説明する
延期する 関数の実行を遅らせるために使用され、通常はリソースをクリーンアップするために使用されます
行く 同時実行性を実現するために新しい goroutine を開始するために使用されます

2. Go キーワードの完全なコード例

キーワードの完全なコード例

キーワード コード例 コード関数
定数 const PI = 3.14159 定数を定義するPI
機能 func add(x, y int) int { return x + y } addという名前の関数を定義します。
輸入 import "fmt" インポートfmtパッケージ
パッケージ package main パッケージ名を定義しますmain
タイプ type Point struct {x, y int} Pointという名前の構造体を定義します。
だった var name string = "John" nameという名前の変数を定義します
ちゃん ch := make(chan int) 整数型の新しいチャネルを作成します
インターフェース type Writer interface { Write([]byte) error } Writerという名前のインターフェイスを定義します。
地図 m := map[string]int{"one": 1} 文字列キーと整数を値として使用するマップを作成する
構造体 type Circle struct { Radius float64 } Circleという名前の構造体を定義します。
壊す if x > 0 { break } の場合x > 0、ループから抜け出す
場合 case "apple": fmt.Println("It's an apple") switchステートメントでは、case
続く if x < 0 { continue } の場合x < 0、現在のループ反復をスキップします。
デフォルト default: fmt.Println("It's default") switch 语句中,定义一个默认 case
else if x > 0 { /*...*/ } else { /*...*/ } if 语句的否定分支
fallthrough case 1: fallthrough switch 语句中,强制执行下一个 case
for for i := 0; i < 10; i++ { /*...*/ } 循环10次
goto goto myLabel 跳转到 myLabel 标签(不推荐)
if if x > 0 { /*...*/ } 条件为 x > 0 时,执行某个操作
range for k, v := range m { /*...*/ } 遍历映射 m
return return x + y 从函数中返回 x + y
select select { case <-ch: /*...*/} 多路通道选择
switch switch x { case 1: /*...*/ } 多分支选择
defer defer fmt.Println("bye") 延迟执行 fmt.Println("bye") 直到函数退出
go go doSomething() 在新的 goroutine 中执行 doSomething() 函数

三、Go的标识符定义

标识符是编程语言中用于识别各种编程元素(如变量、函数、类型等)的名字。在Go语言中,标识符有一组特定的规则和约定。下面将详细解析这些规则和特性。

基础定义

一个标识符是一个以Unicode字母或者下划线(_)开头,并且完全由Unicode字母和Unicode数字组成的单词。

  • Unicode字母:这些是定义在Unicode标准8.0中的Lu、Ll、Lt、Lm和Lo分类中的字符。
  • Unicode数字:这些是定义在Unicode标准8.0中的Nd数字字符分类中的字符。

特殊规定

关键字与标识符

Go的关键字不能被用作标识符。这是一个重要的限制,以避免命名冲突和语法混淆。

空标识符

标识符 _ 是一个特殊字符,它被称为空标识符。它用于忽略函数的某个返回值或强制性声明一个变量,但不使用。

作用域和可见性

  • 导出标识符:一个由Unicode大写字母开头的标识符称为导出标识符,也可以被理解为公开(public)。
  • 非导出标识符:其它(即非Unicode大写字母开头的)标识符称为非导出标识符,也可以被理解为私有(private)。

注意:截至目前(Go 1.20),东方字符都被视为非导出字符。

合法标识符示例

导出标识符

  • Player_9
  • DoSomething
  • VERSION
  • Ĝo
  • Π

非导出标识符

  • _
  • _status
  • memStat
  • book
  • π
  • 一个类型
  • 변수
  • エラー

非法标识符

  • 由Unicode数字开头:123, 3apples
  • 含有不符合要求的Unicode字符:a.b, *ptr, $name, [email protected]
  • 使用关键字:type, range

四、Go的标识符举例

在Go语言中,标识符用于命名各种类型的编程元素,如变量、常量、函数等。本文将通过表格的形式,提供不同类型标识符的代码示例和相关解释。

表格:Go标识符类型、示例与解释

标识符类型 标识符示例 解释
变量 myVariable 用于存储数据值。
常量 MAX_COUNT 用于存储不会改变的数据值。
函数 CalculateSum 包含执行特定任务的代码块。
结构体 Person 用于定义包含多个字段(变量)的复合数据类型。
接口 Writer 定义了方法集,任何实现了这些方法的类型都被认为实现了该接口。
切片 mySlice 动态数组,可以在运行时更改大小。
Map colorMap 键值对的集合。
Channel msgChannel 用于在Goroutine之间发送和接收数据。
fmt 用于组织和复用代码,通常包含函数、变量、常量等。
别名 type MyInt int 用于给现有类型创建一个新名字。
枚举 enum Status 一组命名的整数常量。
Goroutine go doSomething() 并发执行的函数。
标签 LOOP: 用于控制流语句,如breakcontinue
空标识符 _ 用于忽略不需要的值。
导出标识符 PublicVar 在其他包中可见和可用的标识符。
非导出标识符 privateVar 仅在定义它的包内可见和可用的标识符。

五、Go关键词和标识符代码实战

在本部分中,我们将通过一个综合性的代码实战案例来探讨Go中所有关键词和标识符的实际应用。我们将创建一个简单的计算器程序,该程序将实现加、减、乘、除四种操作。

综合案例:简单计算器

package main // package关键词用于定义包名

import "fmt" // import关键词用于引入外部包

// 全局变量声明
var result int // var关键词用于声明变量

const maxInput = 100 // const关键词用于声明常量

// 自定义类型声明
type Calculator func(int, int) int // type关键词用于声明自定义类型

// 主函数
func main() {
    
     // func关键词用于声明函数
    var operator string // 局部变量声明
    var num1, num2 int

    for {
    
     // for关键词用于循环
        fmt.Println("请输入操作符 (+, -, *, /, exit):")
        fmt.Scanln(&operator)

        if operator == "exit" {
    
     // if关键词用于条件判断
            fmt.Println("程序退出。")
            break // break关键词用于跳出循环
        }

        fmt.Println("请输入两个整数:")
        fmt.Scanln(&num1, &num2)

        switch operator {
    
     // switch关键词用于多条件判断
        case "+":
            result = calculate(add, num1, num2)
        case "-":
            result = calculate(subtract, num1, num2)
        case "*":
            result = calculate(multiply, num1, num2)
        case "/":
            if num2 == 0 {
    
     // else关键词用于条件判断
                fmt.Println("除数不能为0")
                continue // continue关键词用于跳过本次循环
            }
            result = calculate(divide, num1, num2)
        default: // default关键词用于多条件默认选项
            fmt.Println("无效的操作符")
            continue
        }

        fmt.Printf("结果为: %d\n", result)
    }
}

// 函数声明与定义
func calculate(calc Calculator, num1, num2 int) int {
    
     
    return calc(num1, num2)
}

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

// 减法
func subtract(a, b int) int {
    
    
    return a - b
}

// 乘法
func multiply(a, b int) int {
    
    
    return a * b
}

// 除法
func divide(a, b int) int {
    
    
    return a / b
}

关键词和标识符解析

  • package:定义了当前代码所属的包,这里是main
  • import: 外部ライブラリを導入するために使用します ここではfmtライブラリを紹介します。
  • var: グローバル変数とローカル変数の宣言。
  • const: 定数を定義するために使用されます。ここでは という名前の定数が定義されますmaxInput
  • type: カスタム型を宣言するために使用され、Calculator関数型がここで定義されます。
  • func: 関数の宣言に使用され、複数の関数を宣言します。
  • for: for ループに使用されます。ここでは無限ループを示します。
  • if, else: 条件判定に使用します。
  • switchcasedefault: 複数条件の判定に使用します。
  • break: ループから抜け出すために使用されます。
  • continue: 現在のループ反復をスキップするために使用されます。

ファイル

TechLeadCloud をフォローして、インターネット アーキテクチャとクラウド サービス テクノロジーに関する完全な知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品の研究開発、チーム管理の経験があり、復旦大学同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud 認定の上級アーキテクトです。 、プロジェクト管理の専門家、AI 製品の研究開発で数億の収益を上げています。

おすすめ

転載: blog.csdn.net/magicyangjay111/article/details/133556201