Go語言 表達式、語句和簡單語句

2023-02-16 17:36 更新

此篇文章將簡單介紹一下Go語言中的表達式和語句,為后面的(特別是下一篇)文章做一個鋪墊。

簡單說來,一個表達式表示一個值,而一條語句表示一個操作。 但是在實際中,有些個表達式可能同時表示多個值,有些語句可能是由很多更基本的語句組成的。 另外,根據(jù)場合不同,某些語句也可以被視為表達式。

Go中,某些語句被稱為簡單語句。Go中各種流程控制語句的某些部分可能會被要求必須為簡單語句或者表達式。 詳見下一篇文章對Go中基本流程控制語句的介紹和解釋。

本篇文章將不對表達式和語句作出詳盡的解釋。 詳盡的解釋需要大量的篇幅。 本文只是列出一些表達式和語句的例子,并非包括所有的表達式和語句的種類,但是簡單語句的所有種類都會被列出來。

一些表達式的例子

Go中大多數(shù)的表達式都是單值表達式。一個單值表達式只表示一個值。 某些表達式可以表示多個值,它們被稱為多值表達式。

以后(不包括本文),如果沒有特殊說明,當表達式這個詞被提及的時候,它表示一個單值表達式。

前面的幾篇文章介紹的字面量、變量和具名常量等均屬于單值表達式。它們可稱為基本表達式。

前面的運算操作符一文中介紹的運算符操作(不包括賦值部分)也都屬于單值表達式。

如果一個函數(shù)至少返回一個值,則它的調(diào)用屬于表達式。 特別的,如果此函數(shù)返回兩個或兩個以上的值,則對它的調(diào)用稱為多值表達式。 不返回任何結(jié)果的函數(shù)的調(diào)用不屬于表達式。

以后的某篇文章中介紹的方法可以看作是特殊的函數(shù)。 所以上述對函數(shù)的解釋同樣適用于方法。

事實上,以后我們將會了解到自定義函數(shù)(包括方法)本身都屬于函數(shù)類型的值,所以它們都是單值表達式。

通道的接收數(shù)據(jù)操作(不包括賦值部分)也屬于表達式。通道將在以后詳解。

Go中的一些表達式,包括剛提及的通道的接收數(shù)據(jù)操作,可能會表示可變數(shù)量的值。 根據(jù)不同的場景,這樣的表達式可能呈現(xiàn)為單值表達式,也可能呈現(xiàn)為多值表達式。 我們將在以后的文章中了解到這樣的表達式。

簡單語句類型列表

Go中有六種簡單語句類型:

  1. 變量短聲明語句。
  2. 純賦值語句,包括x op= y這種運算形式。
  3. 有返回結(jié)果的函數(shù)或方法調(diào)用,以及通道的接收數(shù)據(jù)操作。 上一節(jié)已經(jīng)提到了,這些語句也可以用做表達式。
  4. 通道的發(fā)送數(shù)據(jù)操作。上面已經(jīng)提到過一次,通道以后將在此文中詳解。
  5. 空語句。在下一篇文章我們將看到一些空語句的應(yīng)用。
  6. 自增(x++)和自減(x--)語句。

注意:和C/C++不一樣,在Go中,自增和自減語句不能被當作表達式使用。

簡單語句這個概念在Go中比較重要,所以請牢記這六種簡單語句類型。

一些非簡單語句

下面是一個非簡單語句的不完整列表:

  • 標準變量聲明語句。是的,短聲明語句屬于簡單語句,但是標準變量聲明語句不屬于。
  • (具名)常量聲明語句。
  • 類型聲明語句。
  • (代碼)包引入語句。
  • 顯式代碼塊。一個顯式代碼塊起始于一個左大括號?{?,終止于一個右大括號?}?。 一個顯式代碼塊中可以包含若干子語句。
  • 函數(shù)聲明。 一個函數(shù)聲明中可以包含若干子語句。
  • 流程控制跳轉(zhuǎn)語句。詳見下一章。
  • 函數(shù)返回(?return?)語句。
  • 延遲函數(shù)調(diào)用和協(xié)程創(chuàng)建語句。下下篇文章將會介紹。

一些表達式和語句的例子

// 一些非簡單語句:
import "time"
var a = 123
const B = "Go"
type Choice bool
func f() int {
	for a < 10 {
		break
	}

	// 這是一個顯式代碼塊。
	{
		// ...
	}
	return 567
}

// 一些簡單語句的例子:
c := make(chan bool) // 通道將在以后講解
a = 789
a += 5
a = f() // 這是一個純賦值語句
a++
a--
c <- true // 一個通道發(fā)送操作
z := <-c  // 一個使用通道接收操作
          // 做為源值的變量短聲明語句

// 一些表達式的例子:
123
true
B
B + " language"
a - 789
a > 0 // 一個類型不確定布爾值
f     // 一個類型為“func ()”的表達式

// 下面這些即可以被視為簡單語句,也可以被視為表達式。
f() // 函數(shù)調(diào)用
<-c // 通道接收操作


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號