成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Go語言的詞法元素有幾類

Go語言的詞法元素有5類:1、標識符,由若干字母(由Unicode編碼即可)、下劃線和數字組成的字符序列;2、關鍵字,是被編程語言保留而不讓編程人員作為標識符使用的字符序列,也可以稱為保留字;3、操作符,是用于執行特定算術運算或邏輯操作的符號;4、分隔符;5、字面量,是值的一種標記法。

Go語言的詞法元素有幾類

本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言的語言符號又稱為詞法元素,共包括5類:標識符(identifier)、關鍵字(keyword)、操作符(operator)、分隔符(delimiter)、以及字面量(literal),它們是組成Go語言代碼和程序的最基本單位。

一般情況下,空格符、水平制表符、回車符和換行符都會被忽略,除非它們作為多個語言符號之間的分隔符的一部分。在Go語言中不需要顯示地插入分號,在必要時,Go語言會自動為代碼插入分號以進行語句分隔。

Go語言代碼由若干個Unicode字符組成,Go語言的所有源代碼都必須由Unicode編碼規范的UTF-8編碼格式進行編碼(也就是說編寫的Go語言源碼文件必須是UTF-8編碼格式的)。

Go語言的語言符號又稱為詞法元素,共包括5類:標識符(identifier)、關鍵字(keyword)、操作符(operator)、分隔符(delimiter)、以及字面量(literal)。一般情況下,空格符、水平制表符、回車符和換行符都會被忽略,除非它們作為多個語言符號之間的分隔符的一部分。在Go語言中不需要顯示地插入分號,在必要時,Go語言會自動為代碼插入分號以進行語句分隔。

Go語言代碼由若干個Unicode字符組成,Go語言的所有源代碼都必須由Unicode編碼規范的UTF-8編碼格式進行編碼(也就是說編寫的Go語言源碼文件必須是UTF-8編碼格式的)。

1、標識符

Go語言的標識符是由若干字母(由Unicode編碼即可)、下劃線和數字組成的字符序列;該字符序列的第一個字符必須為字母。

注意:

  • 在Go語言代碼中,每一個標識符都必須在使用前進行聲明。

  • 一個聲明將一個非空的標識符與一個常量、類型、變量、函數或代碼包綁定在一起。

  • 在同一個代碼塊中,不允許重復聲明同一個標識符(除了賦值語句例外)。

  • 在一個源碼文件和一個代碼包中的標識符都需要遵循此規則。

  • 一個已被聲明的標識符的作用域與其直接所屬的代碼塊的范圍相同。

嚴格來講,代碼包聲明語句并不算是一個聲明。因為代碼包名稱并不會出現在任何一個作用域中。代碼包聲明語句的目的是為了鑒別若干源碼文件是否屬于同一個代碼包,或者指定導入代碼包時的默認代碼包引用名稱。

限定標識符用來訪問其他代碼包中的變量或類型。例如,當我需要訪問代碼包os中名為O_RDONLY的常量時,需要這樣寫os.O_RDONLY。

限定標識符能夠使用,需要滿足兩個前提條件:

  • 要訪問的代碼包必須被事先導入;

  • 這個代碼包中的標識符必須是可導出的。

一個可導出的標識符也需要滿足兩個前提條件:

  • 標識符名稱中的第一個字符必須為大寫(Go語言根據標識符名稱中的第一個字符的大小寫來確定這個標識符的訪問權限的,當標識符名稱的第一個字符為大寫時,其訪問權限為“公開的”,也就是該標識符可以被任何代碼包中的任何代碼通過限定標識符訪問到;當標識符的第一個字符為小寫時,其訪問權限就是"包級私有的",也就是只有與該標識符同在一個代碼包的代碼才能夠訪問到它);

  • 標識符必須是被聲明在一個代碼包中的變量或者類型的名稱,或者是屬于某個結構體類型的字段名稱或方法的名稱。

Go語言的預定義標識符:

  • 所有基本數據類型的名稱。
  • 接口類型error
  • 常量true,false和iota
  • 所有內建函數的名稱,即append、cap、close、complex、copy、delete、imag、len、make、new、panic、print、println、real和recover。

Go語言中有一個空標識符,它由一個下劃線表示,一般用于一個不需要引入一個新綁定的聲明中。例如,當我們只想執行一下某個代碼包中的初始化函數,而不需要使用這個代碼包中的任何程序實體的時候,可以編寫如下導入語句:

import _ "runtime/cgo"1.
登錄后復制

其中,"runtime/cgo"代表了一個標準庫代碼包的標識符。

2、關鍵字

關鍵字(也稱為保留字)是被編程語言保留而不讓編程人員作為標識符使用的字符序列。

類別 關鍵字
程序聲明 import, package
程序實體聲明和定義 chan, const, func, interface, map, struct, type, var
程序控制流程 go, select, break, case, continue, default, defer, else, fallthrough, for, goto, if, range, return, switch

在Go語言中,程序實體的聲明和定義是建立在其數據類型的體系之上的。例如關鍵字chan、func、interface、map和struct,分別于Go語言的復合數據類型Channel(通道)、Function(函數)、Interface(接口)、Map(字典)和Struct(結構體)相對應。

程序控制流程的關鍵字,一共15個。其中go和select,這兩個主要用于Go語言并發編程。

3、字面量

簡單來說,字面量就是值的一種標記法。但是,在Go中,字面量的含義要更加廣泛一些。

Go語言代碼中用到的字面量有以下3類:

1、表示基礎數據類型值的各種字面量。例如,表示浮點數類型值的12E-3。

2、構造各種自定義的復合數據類型的類型字面量。例如,下面表示一個名稱為Person的自定義結構體類型:

type Person struct { 	Name 	string 	Age	uint8 	Address	string }
登錄后復制

3、表示復合數據類型的值的復合字面量

被用來構造類型Struct(結構體)、Array(數組)、Slice(切片)和Map(字典)的值。例如,下面的字面量用于表示上面名稱為Person的結構體類型的值:

Person { 	Name:"Huazie", 	Age: "21", 	Address: "Nanjing, China" }
登錄后復制

注意:
對復合字面量的每次求值都會導致一個新的值被創建。因此,如上該復合字面量每被求值一次就會創建一個新的Person類型的值。

Go語言不允許在一個此類的復合字面變量中,出現重復的鍵。如下都是錯誤,無法通過編譯,因為鍵都有重復。

//表示結構體類型值,有重復的鍵 Name Person {Name: "Huazie",Age: "21", Name: "Unknown"} //表示字典類型值,有重復的鍵 Age map[string]string{ Name: "Huazie",Age: "21", Age: "21"} //表示切片類型值,有重復的鍵 0 []string{0: "0", 1: "1", 0: "-1"}
登錄后復制

4、類型

一個類型確定了一類值的集合,以及可以在這些值上施加的操作。類型可以由類型名稱或者類型字面量指定,分為基本類型和復合類型,基本類型的名稱可以代表其自身。

var bookName string1.
登錄后復制

如上聲明了一個類型為string(基本類型中的一個)、名稱為bookName的變量。

其他基本類型(預定義類型)有bool、byte、rune、int/uint、int8/uint8、int16/uint16、int32/uint32、int64/uint64、float32、float64、complex64和complex128。除了bool和string之外的其他基本類型也叫做數值類型。

復合類型一般由若干(也包括零)個其他已被定義的類型組合而成。復合類型有Channel(通道)、Function(函數)、Interface(接口)、Map(字典)、Struct(結構體)、Slice(切片)、Array(數組)和Pointer(指針)。

Go語言中的類型又可以分為靜態類型和動態類型。一個變量的靜態類型是指在變量聲明中給出的那個類型。絕大多數類型的變量都只有靜態類型。唯獨接口類型的變量例外,它除了擁有靜態類型之外,還擁有動態類型(接口類型在后面會講到)。

每一個類型都會有一個潛在類型。如果這個類型是一個預定義類型(也就是基本類型),或者是一個由類型字面量構造的復合類型,那么它的潛在類型就是它自身。如string類型的潛在類型就是string類型,上面自定義的Person類型的潛在類型就是Person。如果一個類型并不屬于上述情況,那么這個類型的潛在類型就是類型聲明中的那個類型的潛在類型。

如下聲明一個自定義類型

type MyString string1.
登錄后復制

如上可以把類型MyString看作string類型的一個別名類型,那么MyString類型的潛在類型就是string類型。Go語言基本數據類型中的rune類型可以看作是uint32類型的一個別名類型,其潛在類型就是uint32。

注意:

  • 類型MyString和類型string是兩個不相同的類型。不能將其中一個類型的值賦給另一個類型的變量。
  • 別名類型與它的源類型的不同僅僅體現在名稱上,它們的內部結構是一致的;下面的類型轉換的表達式都是合法的:MyString(“ABC”) 和string(MyString(“ABC”))。這種類型轉換并不會創建新的值。

一個類型的潛在類型具有可傳遞性,如下:

type iString MyString1.
登錄后復制

則類型isString的潛在類型就是string類型。

這里聲明一個類型,如下:

type MyStrings [3]string1.
登錄后復制

**注意:**類型MyStrings的潛在類型并不是[3]string。[3]string既不是一個預定義的類型,也不是一個由類型字面量構造的復合類型,而是一個元素類型為string的數組類型。

根據上面的定義可知類型MyStrings的潛在類型就是[3]string的潛在類型string。

Go語言規定,一個數組類型的潛在類型決定了在該類型的變量中可以存放哪一個類型的元素。

5、操作符

操作符就是用于執行特定算術運算或邏輯操作的符號。(這里不詳細講解了,跟C語言的操作符類似),不過Go語言中沒有三元操作符,所以除了一元操作符以外都必定是二元操作符。Go語言一共有21個操作符,包括算術操作符、比較操作符、邏輯操作符、地址操作符和接收操作符。

符號 說明 示例
&& 邏輯與操作。二元,邏輯操作符 true && false //表達式結果是false
== 相等判斷操作。二元,比較操作符 “abc” == “abc”//結果是true
!= 不等判斷操作。二元,比較操作符 “abc” != “Abc”//結果是true
< 小于判斷操作。二元,比較操作符 1 < 2 //表達式結果是true
<= 小于或等于。二元,比較操作符 1 <= 2 //表達式結果是true
> 大于判斷操作。二元,比較操作符 3 > 2 //表達式結果是true
>= 大于或等于。二元,比較操作符 3 >= 2 //表達式結果是true
+ 表示求和,一元又是二元,算術操作符 +1 //結果為1 (1+2) //結果是3
表示求差,一元又是二元,算術操作符 -1 //結果為-1 (1 – 2) //結果是-1
按位或操作,二元,算術操作符 5 11 //表達式的結果是15
^ 按位異或,一元又是二元,算術操作符 511//結果是14(5)//結果是-6
* 求積或取值,一元,二元,算術,地址 *p //取值操作
/ 求商操作,二元,算術操作符 10 / 5 //表達式的結果為2
% 求余數操作,二元,算術操作符 12 % 5 //表達式的結果為2
<< 按位左移操作,二元,算術操作符 4 << 2 //表達式的結果為16
>> 按位右移操作,二元,算術操作符 4 >> 2 //表達式的結果為1
& 按位與操作,一元,二元,算術,地址 &v //取地址操作
&^ 按位清除操作,二元,算術操作符 5 &^ 11 //表達式的結果為4
! 邏輯非操作,一元,邏輯操作符 !b //若b為true,結果為false
<- 接收操作,一元,接收操作符 <- ch

注意:假設上面的ch 代表了元素類型為 byte的通道類型值,則<- ch表示從ch中接收byte類型值的操作。

重點講解3個操作符

1、&^ 實現了按位清除操作,按位清除就是根據第二個操作數的二進制值對第一個操作數的二進制值進行相應的清零操作,如果第二個操作數的某個二進制位上的數組為1,就把第一個操作數的對應二進制位上的數值設置為0。否則,第一個操作數的對應二進制位上的數值不變。這樣的操作并不會改變第一個操作數的原值,只會根據兩個操作數的二進制值計算出結果值。這樣就可以理解上面的5 &^ 11的結果為4了。

2、^ 作為一元操作符,分兩種情況:

(1). 操作數是無符號的整數類型,使用這一個操作就相當于對這個操作數和其整數類型的最大值進行二元的按位異或操作,如下:

^uint8(1)           = 254      //無符號整數的一元按位異或操作00000001 ^ 11111111 = 11111110//對應的二進制數運算1.2.3.
登錄后復制

如上,內置函數uint8會將一個整數字面量轉換為一個uint8類型的值,這保證了一元操作符^的唯一操作數一定是一個無符號整數類型的值。

(2). 操作是有符號的整數類型,這一操作就相當于對這個操作數和-1進行二元按位異或操作。例如:

^1                  = -2  //有符號整數的一元按位異或操作00000001 ^ 11111111 = 11111110//對應的二進制運算1.2.
登錄后復制

**注意:**以上的操作數的二進制值都是以補碼形式表示;默認情況下整數字面量是有符號的,所以(2)中操作數1不需要顯示使用內置函數int8 。

3、<- 接收操作符,只作用于通道類型的值。使用時,需要注意兩點:

(1). 從一個通道類型的空值(即nil)接收值的表達式將會永遠被阻塞。
(2). 從一個已被關閉的通道類型值接收值會永遠成功并立即返回一個其元素類型的零值。

一個由接收操作符和通道類型的操作數所組成的表達式可以直接被用于變量賦值或初始化,如下所示(在賦值語句講解時,再細說)

v1 := <-ch v2 = <-ch1.2.
登錄后復制

特殊標記 = 用于將一個值賦給一個已被聲明的變量或常量。
特殊標記 := 則用于在聲明一個變量的同時對這個變量進行賦值,且只能在函數體內使用。

又如下:

v, ok = <-ch v, ok := <-ch1.2.
登錄后復制

當同時對兩個變量進行賦值或初始化時,第二個變量將會是一個布爾類型的值。這個值代表了接收操作的成功與否。如果這個值為false,就說明這個通道已經被關閉了。(之后講解通道類型會詳細介紹)。

操作符優先級

優先級 操作符
5 * / % << >> & &^
4 + – ^
3 == != < <= > >=
2 &&
1

擴展知識:表達式

基本表達式

(1) 使用操作數來表示;

(2) 使用類型轉換來表示;

(3) 使用內建函數調用來表示;

(4) 一個基本表達式和一個選擇符號組成選擇表達式;

例如,如果在一個結構體類型中存在字段f,我們就可以在這個結構體類型的變量x上應用一個選擇符號來訪問這個字段f,即x.f。其中,.f就是一個選擇符號。注意:前提是這個變量x的值不能是nil。在Go語言中,nil用來表示空值。

(5) 一個基本表達式和一個索引符號組成索引表達式;

索引符號由狹義的表達式(僅由操作符和操作數組成)和外層的方括號組成,例如[]int{1,2,3,4,5}[2]就是索引表達式。
Go語言允許如下的賦值語句:

v, ok := a[x]1.
登錄后復制

如上a為字典類型,x為字典的鍵。該索引表達式的結果是一對值,而不是單一值。第一個值的類型就是該字典類型的元素類型,而第二個值則是布爾類型。與變量ok綁定的布爾值代表了在字典類型a中是否包含了以x為鍵的鍵值對。如果在a中包含這樣的鍵值對,那么賦給變量ok的值就是true,否則就為false。

**注意:**雖然當字典類型的變量a的值為nil時,求值表達式a[x]并不會發生任何錯誤,但是在這種情況下對a[x]進行賦值卻會引起一個運行時恐慌( Go語言異常)。

(6) 一個基本表達式和一個切片符號組成切片表達式;

切片符號由2個或3個狹義的表達式和外層的方括號組成,這些表達式之間由冒號分隔。切片符號作用與索引符號類似,只不過索引符號針對的是一個點,切片符號針對的是一個范圍。例如,要取出一個切片[]int{1,2,3,4,5}的第二個到第四個元素,那么可以使用切片符號的表達式[]int{1,2,3,4,5}[1:4],該結果還是一個切片。

切片表達式a[x:y:z],a是切片符號[x:y]的操作對象。其中,x代表了切片元素下界索引,y代表了切片的元素上界索引,而z則代表了切片的容量上界索引。約束如下:

0 <= 元素下界索引 <= 元素上界索引 <= 容量上界索引 <= 操作對象的容量

設a的值為[]int{1,2,3,4,5},則切片表達式a[:3]等同于a[0:3],這是因為切片符號的元素下界索引的默認值為0,相應的元素上界的索引的默認值為操作對象的長度值或容量值,即切片表達式a[3:]等同于a[3:5]。同樣,切片表達式a[:]等同于復制a所代表的值并將這個復制品作為表達式的求值結果。

注意: UTF-8 編碼格式會以3個字節來表示一個中文字符,而切片操作是針對字節進行的。

如果有“Go并發編程實戰”的字符串類型的變量a,那么切片表達式a[1:3]的結果不是“o并”,而a[1:5]的結果才是“o并”。

(7) 一個基本表達式和一個類型斷言符號組成;

類型斷言符號以一個英文句號為前綴,并后跟一個被圓括號括起來的類型名稱或類型字面量。類型斷言符號用于判斷一個變量或常量是否為一個預期的類型,并根據判斷結果采取不同的響應。例如,如果要判斷一個int8類型的變量num是否是int類型,可以這樣編寫表達式:interface{}(num).(int)。

對于一個求值結果為接口類型值的表達式x和一個類型T,對應的類型斷言為:

x.(T)1.
登錄后復制

該表達式的作用是判斷“x不為nil且存儲在其中的值是T類型的”是否成立。

如果T不是一個接口類型,那么x.(T)會判斷類型T是否為x的動態類型(一個變量的動態類型就是在運行期間存儲在其中的值的實際類型);而這個實際類型必須是該變量聲明的那個類型的一個實現類型,否則就根本不可能在該變量中存儲這一類型的值。所以類型T必須為x的類型的一個實現類型,而在Go語言中只有接口類型可以被其他類型實現,所以x的求值結果必須是一個接口類型的值。

所以上面表達式interface{}(num).(int)中表達式interface{}(num)的含義就是將變量num轉換為interface{}類型的值(即它的結果值是接口類型的),而這剛好符合前面的定義。

知識點: interface{}是一個特殊的接口類型,代表空接口。所有類型都是它的實現類型。

在對變量的賦值或初始化的時候,也可以使用類型斷言,如下:

v, ok := x.(T)1.
登錄后復制

當使用類型斷言表達式同時對兩個變量進行賦值時,如果類型斷言成功,那么賦給第一個變量的將會是已經被轉換為T類型的表達式x的求值結果,否則賦給第一個變量的就是類型T的零值。布爾類型會被賦給變量ok,它體現了類型斷言的成功(true)與否(false)。

注意: 在這種場景下,即使類型斷言失敗也不會引發運行時恐慌。

(8) 一個基本表達式和一個調用符號組成。

調用符號只針對于函數或者方法。與調用符號組合的基本表達式不是一個代表代碼包名稱(或者其別名)的標識符就是一個代表結構體類型的方法的名稱的標識符。調用符號由一個英文句號為前綴和一個被圓括號括起來的參數列表組成,多個參數列表之間用逗號分隔。例如,基本表達式os.Open(“/etc/profile”)表示對代碼包os中的函數Open的調用。

可變長參數

如果函數f可以接受的參數的數量是不固定的,那么函數f就是一個能夠接受可變長參數的函數,簡稱可變參函數。在Go語言中,在可變參函數的參數列表的最后總會出現一個可變長參數,這個可變長參數的類型聲明形如…T。Go語言會在每次調用函數f的時候創建一個切片類型值,并用它來存放這些實際函數。這個切片類型值的長度就是當前調用表達式中與可變長參數綁定的實際參數的數量。

可變參函數appendIfAbsent聲明如下(函數體省略):

func appendIfAbsent(s []string, t ...string) []string1.
登錄后復制

針對此函數的調用表達式如下:

appendIfAbsent([]string(“A”,”B”,”C”),”C”,”B”,”A”)1.
登錄后復制

其中,與可變參數t綁定的切片類型值為[]string{”C”,”B”,”A”},包含了實際參數”C”,”B”和”A”。

也可以直接把一個元素類型為T的切片類型值賦給…T類型的可變長參數,如下調用:

appendIfAbsent([]string(“A”,”B”,”C”), []string(”C”,”B”,”A”)...)1.
登錄后復制

或者如果有一個元素類型為stirng的切片類型的變量s的話,如下調用:

appendIfAbsent([]string(“A”,”B”,”C”), s...)1.
登錄后復制

對于將切片類型的變量賦給可變長參數的情況,Go語言不會專門創建一個切片類型值來存儲其中的實際參數。因為,這樣的切片類型值已經存在了,可變長參數t的值就是變量s的值。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
办公室欧美大尺寸SUV| 苍井空无码免费换线| ASS中国人体欣赏PICS| 92国产精品午夜福利免费| SEERX性欧美| 粉嫩AV一二三区免费| 国产精品无码一区二区三区免费| 国产一区二区三区日韩精品| 精品无码国产污污污免费网站| 久久亚洲精品国产精品| 欧美无人区码卡二卡3卡2022| 人妻AV无码系列专区移动可看| 日本无码SM凌虐强制M字开腿| 婷婷色香五月综合激激情| 亚洲AV无码一区二区三区性色 | 国模无码人体一区二区| 久久久久成人精品无码| 欧美亚洲精品SUV| 少妇高潮太爽了在线播放| 性少妇FREESEXVIDEO| 亚洲婷婷五月激情综合APP| 77777亚洲午夜久久多人| 隔壁人妻被水电工征服| 精品国产一区二区三区噜噜噜| 蜜臀AV在线播放| 少妇极度饥渴少妇高潮| 亚洲激情无码一区| CHINA末成年VIDEOS| 国产放荡对白视频在线观看| 久久精品AⅤ无码中文字字幕| 欧美乱大交XXXXX在线观看| 玩弄CHINESE丰满人妻VI| 亚洲中文字幕无码AV| 成人AV无码乱码在线观看无码| 国产一国产二国产三国产四国产五| 老太性开放BBWBBWBBW| 乳荡的小痍子免费播放| 亚洲人成网站在线播放942| 按摩师的巨大滑进我的身体| 国语自产偷拍精品视频偷拍| 欧美成人家庭影院| 小SAO货撅起屁股扒开GIF动| 综合欧美亚洲日本一区| 国产成人麻豆亚洲综合无码精品 | 精品国产AⅤ一区二区三区V免费 | 东京热无码AV男人的天堂| 精品无码国产自产拍在线观看蜜 | 亚洲AV女人18毛片水真多| 2823理论片在线播放| 国产精品国语对白露脸在线播放| 久久亚洲AV无码精品色午夜 | 女强人被春药精油按摩4| 无线乱码不卡一二三四破解版| 中文亚洲AV片不卡在线观看| 国产精品视频一区国模私拍 | 午夜理论影院第九电影院| 24种男女插秧法| 国模小黎大尺度精品(02)[ | 久久青草免费福利资源站| 少妇高潮喷水正在播放| 中文一国产一无码一日韩| 国产欧美日韩一区二区三区| 欧美日韩久久中文字幕| 亚洲精品嫩草研究院久久| 大地琪琪网在线观看| 麻花豆传媒剧国产免费| 小婷又软又嫩又紧水又多的软件| AV男人在线东京天堂| 精品国产自在现线看久久| 少妇人妻大乳在线视频不卡| 中文字幕无码久久一区| 韩国AV一区二区| 色五月丁香五月综合五月4438 | 麻豆文化传媒WWW| 亚洲AV成人一区二区三区在线观 | 日本一区二区三区久久久久久久久| 亚洲中文字幕在线第六区| 国产猛男猛女超爽免费视频| 琪琪777午夜理论片在线观看播| 亚洲人77777在线观看| 国产丰满大屁股XXXX| 秋霞国产午夜伦午夜无码灬| 一本大道无码AV天堂| 国内粗鲁VIDEO老熟妇| 色偷偷久久一区二区三区| 18一20岁GAYXXⅩ男| 精品人妻无码区二区三区密桃| 四虎成人WWW成人影院| A级毛片高清免费播放| 久久亚洲日韩成人无码| 亚洲AV无码久久| 国产成人精品免费视频网页大全| 亲孑伦一区二区三区| 在线观看中文最近最新观看| 精品人妻AV一区二区三区| 无码毛片一区二区三区本码视频| 成人白浆超碰人人人人| 欧美高清VIVO最新| 曰本真人性做爰ⅩXX| 久久99精品国产自在现线小黄鸭 | 国产综合无码一区二区色蜜蜜| 色欲色香天天天综合无码| 爱情岛亚洲AV永久入口首页| 女人扒开屁股桶爽30分钟| 永久免费看照片的聊骚软件| 精品一卡二卡≡卡四卡日产乱码| 亚洲 国产 制服 丝袜 一区| 国产精品xxxxav| 熟妇人妻AV无码一区二区三区| 部长来家里喝酒日剧叫什么| 欧美又粗又大XXXXBBBB疯| 中文字幕AV无码人妻| 老牛嫩草一二三产品区别| 亚洲伊人久久大香线蕉AV| 精品日产A一卡2卡三卡4卡乱| 亚洲AV之男人的天堂网站| 国产午夜精品理论片| 无码专区亚洲综合另类| 国产成人愉拍精品| 天天躁恨恨躁夜躁2020| 国产 | 欧洲野花视频欧洲1| 搡老女人野外老熟妇AAA| 粗大的内捧猛烈进出少妇| 色狠狠色狠狠综合天天| 纯净模式怎么关闭| 深夜A级毛片免费视频| 高清熟女国产一区二区三区| 日韩一区二区三区av| 成人网站在线进入爽爽爽| 色老头BGMBGMBGM| 国产AV无码精品色午夜| 天堂AⅤ无码一区二区三区| 国产成人精品999在线观看| 天天摸夜夜摸夜夜狠狠摸| 国产精品久久久天天影视| 性生交大片免费看淑女出招| 国产在线精品二区| 亚洲精品中文字幕无码专区| 久久精品国产一区二区三| 喑交小拗女一区二区三区| 美女与野兽在线观看| AA级女人大片喷水视频免费| 青苹果影院YY04080看| 厨房里抱着岳丰满大屁股| 同性男男黄G片免费网站| 国产未成女一区二区| 亚洲精品无码AⅤ片影音先锋在线| 久久精品国产99精品国产2| 又爽又刺激免费男女视频| 女人的选择HD中字| 成人无码AⅤ久久精品国产传媒| 婷婷久久香蕉五月综合加勒比 | 亚洲AV成人片无码网站 | 亚洲一区强奸视频| 免费网站看SM调教打屁股视频| BBBBBB嫩BBBBBB| 色综合色狠狠天天综合色| 国产男男GAY做受ⅩXX小说| 亚洲精品无码午夜福利中文字幕| 久久久久琪琪去精品色一到本| 18国产精品白浆在线观看免费| 人人妻人人澡AV| 国产精品嫩草影院永久… | 999国内精品永久免费观看| 日本熟妇乱人伦XXXX| 国产精品普通话国语对白露脸| 亚洲国产最大AV| 男女啪啪免费观看的网址| 成人区人妻精品一区二区不卡网站| 无码精品人妻一区二区| 久激情内射婷内射蜜桃| 99精品视频九九精品视频| 色综合久久久久无码专区| 国内精品久久久久久久久电影网| 夜夜躁天天躁很很躁| 人妻无码久久中文字幕专区 | 特黄 做受又硬又粗又大视频| 黑人上司粗大拔不出来| 中无码人妻丰满熟妇啪啪| 色天使色偷偷色噜噜| 精产国品一区别视频| AV成人羞羞漫画永久入口| 无码国产69精品久久久孕妇| 久久精品人人做人人爽电影蜜月| XXX.日本学生妹.COM| 亚州中文字幕午夜福利电影| 两个男用舌头到我的蕊花| 大胸美女污污污WWW网站| 亚洲国产精久久久久久久蜜桃| 女子初尝黑人巨嗷嗷叫| 国产精品未满十八禁止观看| 又大又长粗又爽又黄少妇毛片| 色欲AV久久一区二区三区久| 精品人成视频免费国产| 被喂春药蹂躏的欲仙欲死视频| 亚洲AV永久无码精品黑人| 欧美性BBBBBXXXXX4050免费看| 国产无遮挡又黄又爽高潮| 99热最新成人国产精品| 亚洲AV成人精品网站在线播放|