日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang flag包(命令行参数解析)

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang flag包(命令行参数解析) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 使用示例:

我們以?nginx?為例,執行?nginx -h,輸出如下:

nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options:-?,-h : this help-v : show version and exit-V : show version and configure options then exit-t : test configuration and exit-T : test configuration, dump it and exit-q : suppress non-error messages during configuration testing-s signal : send signal to a master process: stop, quit, reopen, reload-p prefix : set prefix path (default: /usr/local/nginx/)-c filename : set configuration file (default: conf/nginx.conf)-g directives : set global directives out of configuration file

后續我們會利用flag包實現一個并發測試接口的程序。
現在我們來利用flag包簡單實現一下nginx -h這個功能:

package mainimport ("flag""fmt""os" )// 實際中應該用更好的變量名 var (h boolv, V boolt, T boolq *bools stringp stringc stringg string )func init() {flag.BoolVar(&h, "h", false, "this help")flag.BoolVar(&v, "v", false, "show version and exit")flag.BoolVar(&V, "V", false, "show version and configure options then exit")flag.BoolVar(&t, "t", false, "test configuration and exit")flag.BoolVar(&T, "T", false, "test configuration, dump it and exit")// 另一種綁定方式q = flag.Bool("q", false, "suppress non-error messages during configuration testing")// 注意 `signal`。默認是 -s string,有了 `signal` 之后,變為 -s signalflag.StringVar(&s, "s", "", "send `signal` to a master process: stop, quit, reopen, reload")flag.StringVar(&p, "p", "/usr/local/nginx/", "set `prefix` path")flag.StringVar(&c, "c", "conf/nginx.conf", "set configuration `file`")flag.StringVar(&g, "g", "conf/nginx.conf", "set global `directives` out of configuration file")// 改變默認的 Usage,flag包中的Usage 其實是一個函數類型。這里是覆蓋默認函數實現,具體見后面Usage部分的分析flag.Usage = usage }func main() {flag.Parse()if h {flag.Usage()} }func usage() {fmt.Fprintf(os.Stderr, `nginx version: nginx/1.10.0 Usage: nginx [-hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options: `)flag.PrintDefaults() }

看不懂以上的代碼實現沒關系,先明確flag的能力,看完下面的講解回過頭來看就可以看懂了。

1.2 flag 包概述

flag 包實現了命令行參數的解析。

1.2.1 定義 flags 有兩種方式

1)flag.Xxx(),其中 Xxx 可以是 Int、String,Bool 等;返回一個相應類型的指針,如:
var ip = flag.Int("flagname", 1234, "help message for flagname")

  • 第一個參數 :flag名稱為flagname
  • 第二個參數 :flagname默認值為1234
  • 第三個參數 :flagname的提示信息

返回的ip是指針類型,所以這種方式獲取ip的值應該fmt.Println(*ip)

2)flag.XxxVar(),將 flag 綁定到一個變量上,如:

var flagValue int flag.IntVar(&flagValue, "flagname", 1234, "help message for flagname")
  • 第一個參數 :接收flagname的實際值的
  • 第二個參數 :flag名稱為flagname
  • 第三個參數 :flagname默認值為1234
  • 第四個參數 :flagname的提示信息
    這種方式獲取ip的值fmt.Println(ip)就可以了:

1.2.2 自定義 Value

另外,還可以創建自定義 flag,只要實現 flag.Value 接口即可(要求?receiver?是指針),這時候可以通過如下方式定義該 flag:

flag.Var(&flagVal, "name", "help message for flagname")

例如,解析我喜歡的編程語言,我們希望直接解析到 slice 中,我們可以定義如下 sliceValue類型,然后實現Value接口:

package mainimport ("flag""fmt""strings" )//定義一個類型,用于增加該類型方法 type sliceValue []string//new一個存放命令行參數值的slice func newSliceValue(vals []string, p *[]string) *sliceValue {*p = valsreturn (*sliceValue)(p) }/* Value接口: type Value interface {String() stringSet(string) error } 實現flag包中的Value接口,將命令行接收到的值用,分隔存到slice里 */ func (s *sliceValue) Set(val string) error {*s = sliceValue(strings.Split(val, ","))return nil }//flag為slice的默認值default is me,和return返回值沒有關系 func (s *sliceValue) String() string {*s = sliceValue(strings.Split("default is me", ","))return "It's none of my business" }/* 可執行文件名 -slice="java,go" 最后將輸出[java,go] 可執行文件名 最后將輸出[default is me]*/ func main(){var languages []stringflag.Var(newSliceValue([]string{}, &languages), "slice", "I like programming `languages`")flag.Parse()//打印結果slice接收到的值fmt.Println(languages) }

1.2.3 解析 flag

在所有的 flag 定義完成之后,可以通過調用?flag.Parse()?進行解析。

命令行 flag 的語法有如下三種形式:

-flag // 只支持bool類型 -flag=x -flag x // 只支持非bool類型

以上語法對于一個或兩個‘-’號,效果是一樣的,但是要注意對于第三種情況,只能用于非 bool 類型的 flag。原因是:如果支持,那么對于這樣的命令 cmd -x *,如果有一個文件名字是:0或false等,則命令的原意會改變(bool 類型可以和其他類型一樣處理,其次 bool 類型支持 -flag 這種形式,因為Parse()中,對 bool 類型進行了特殊處理)。默認的,提供了 -flag,則對應的值為 true,否則為 flag.Bool/BoolVar 中指定的默認值;如果希望顯示設置為 false 則使用 -flag=false。

int 類型可以是十進制、十六進制、八進制甚至是負數;bool 類型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。Duration 可以接受任何 time.ParseDuration 能解析的類型。

  • 注:如果bool類型的參數在命令行中用了-flag false這種形式時,其后的參數都會被當做非flag(non-flag)參數,non-flag 參數后面解釋。

1.3 類型和函數

在看類型和函數之前,先看一下變量。

ErrHelp:該錯誤類型用于當命令行指定了 ·-help` 參數但沒有定義時。

例如1.2.2例子中:如果執行時用了-help或者-h時就會輸出help message:

Usage of myflag.exe:-slice languagesI like programming languages

Usage:這是一個函數,用于輸出所有定義了的命令行參數和幫助信息(usage message)。一般,當命令行參數解析出錯時,該函數會被調用。我們可以指定自己的 Usage 函數,即:flag.Usage = func(){}

1.3.1 函數

go標準庫中,經常這么做:

定義了一個類型,提供了很多方法;為了方便使用,會實例化一個該類型的實例(通用),這樣便可以直接使用該實例調用方法。比如:encoding/base64 中提供了 StdEncoding 和 URLEncoding 實例,使用時:base64.StdEncoding.Encode()

在 flag 包使用了有類似的方法,比如 CommandLine 變量,只不過 flag 進行了進一步封裝:將 FlagSet 的方法都重新定義了一遍,也就是提供了一系列函數,而函數中只是簡單的調用已經實例化好了的 FlagSet 實例:CommandLine 的方法。這樣,使用者是這么調用:flag.Parse() 而不是 flag. CommandLine.Parse()。(Go 1.2 起,將 CommandLine 導出,之前是非導出的)

這里不詳細介紹各個函數,其他函數介紹可以參考astaxie的gopkg——flag章節。

1.3.2 類型(數據結構)

1)ErrorHandling

type ErrorHandling int

該類型定義了在參數解析出錯時錯誤處理方式。定義了三個該類型的常量:

const (ContinueOnError ErrorHandling = iotaExitOnErrorPanicOnError )

三個常量在源碼的 FlagSet 的方法 parseOne() 中使用了。

2)Flag

// A Flag represents the state of a flag. type Flag struct {Name string // name as it appears on command lineUsage string // help messageValue Value // value as setDefValue string // default value (as text); for usage message }

Flag 類型代表一個 flag 的狀態。

比如,對于命令:./nginx -c /etc/nginx.conf,相應代碼是:

flag.StringVar(&c, "c", "conf/nginx.conf", "set configuration `file`")

則該 Flag 實例(可以通過?flag.Lookup("c")?獲得)相應各個字段的值為:

&Flag{Name: c,Usage: set configuration file,Value: /etc/nginx.conf,DefValue: conf/nginx.conf, }

Lookup函數:獲取flag集合中名稱為name值的flag指針,如果對應的flag不存在,返回nil
示例:

package mainimport ("flag""fmt" )//定義一個全局變量的命令行接收參數 var testFlag = flag.String("test", "default value", "help message.")//打印值的函數 func print(f *flag.Flag) {if f != nil {fmt.Println(f.Value)} else {fmt.Println(nil)} }func main() {//沒有用flag.Parse()解析前fmt.Print("test:")print(flag.Lookup("test"))fmt.Print("test1:")print(flag.Lookup("test1"))//用flag.Parse()解析后flag.Parse()fmt.Print("test:")print(flag.Lookup("test"))fmt.Print("test1:")print(flag.Lookup("test1")) }

運行結果:

// ./testlookup -test "12345" test:default value test1:<nil> test:12345 test1:<nil>

3)FlagSet

// A FlagSet represents a set of defined flags. type FlagSet struct {// Usage is the function called when an error occurs while parsing flags.// The field is a function (not a method) that may be changed to point to// a custom error handler.Usage func()name string // FlagSet的名字。CommandLine 給的是 os.Args[0]parsed bool // 是否執行過Parse()actual map[string]*Flag // 存放實際傳遞了的參數(即命令行參數)formal map[string]*Flag // 存放所有已定義命令行參數args []string // arguments after flags // 開始存放所有參數,最后保留 非flag(non-flag)參數exitOnError bool // does the program exit if there's an error?errorHandling ErrorHandling // 當解析出錯時,處理錯誤的方式output io.Writer // nil means stderr; use out() accessor }

4)Value 接口

// Value is the interface to the dynamic value stored in a flag. // (The default value is represented as a string.) type Value interface {String() stringSet(string) error }

所有參數類型需要實現 Value 接口,flag 包中,為int、float、bool等實現了該接口。借助該接口,我們可以自定義flag。(上文已經給了具體的例子)

1.4 主要類型的方法(包括類型實例化)

flag 包中主要是 FlagSet 類型。

1.4.1 實例化方式

NewFlagSet() 用于實例化 FlagSet。預定義的 FlagSet 實例 CommandLine 的定義方式:

// The default set of command-line flags, parsed from os.Args. var CommandLine = NewFlagSet(os.Args[0], ExitOnError)

可見,默認的 FlagSet 實例在解析出錯時會退出程序。

由于 FlagSet 中的字段沒有 export,其他方式獲得 FlagSet實例后,比如:FlagSet{} 或 new(FlagSet),應該調用Init() 方法,以初始化 name 和 errorHandling,否則 name 為空,errorHandling 為 ContinueOnError(errorHandling默認為0)。

1.4.2 定義 flag 參數的方法

這一系列的方法都有兩種形式,在一開始已經說了兩種方式的區別。這些方法用于定義某一類型的 flag 參數。

1.4.3 解析參數(Parse)

func (f *FlagSet) Parse(arguments []string) error

從參數列表中解析定義的 flag。方法參數 arguments 不包括命令名,即應該是os.Args[1:]。事實上,flag.Parse()?函數就是這么做的:

// Parse parses the command-line flags from os.Args[1:]. Must be called // after all flags are defined and before flags are accessed by the program. func Parse() {// Ignore errors; CommandLine is set for ExitOnError.CommandLine.Parse(os.Args[1:]) }

該方法應該在 flag 參數定義后而具體參數值被訪問前調用。

如果提供了 -help 參數(命令中給了)但沒有定義(代碼中沒有),該方法返回 ErrHelp 錯誤。默認的 CommandLine,在 Parse 出錯時會退出程序(ExitOnError)。

為了更深入的理解,我們看一下 Parse(arguments []string) 的源碼:

func (f *FlagSet) Parse(arguments []string) error {f.parsed = truef.args = argumentsfor {seen, err := f.parseOne()if seen {continue}if err == nil {break}switch f.errorHandling {case ContinueOnError:return errcase ExitOnError:os.Exit(2)case PanicOnError:panic(err)}}return nil }

真正解析參數的方法是非導出方法?parseOne。

結合?parseOne?方法,我們來解釋?non-flag?以及包文檔中的這句話:

Flag parsing stops just before the first non-flag argument ("-" is a non-flag argument) or after the terminator "--".

我們需要了解解析什么時候停止。

根據 Parse() 中 for 循環終止的條件(不考慮解析出錯),我們知道,當 parseOne 返回 false, nil 時,Parse 解析終止。正常解析完成我們不考慮。看一下 parseOne 的源碼發現,有三處會返回 false, nil。
在這里先說一下non-flag命令行參數是指不滿足命令行語法的參數,如命令行參數為cmd -flag=true abc則第一個非flag命令行參數為“abc”

1)參數列表長度為0

if len(f.args) == 0 {return false, nil }

2)第一個 non-flag 參數

s := f.args[0] if len(s) == 0 || s[0] != '-' || len(s) == 1 {return false, nil }

也就是,當遇到單獨的一個"-"或不是"-"開始時,會停止解析。比如:

./nginx - 或 ./nginx ba或者./nginx

這兩種情況,-c?都不會被正確解析。像該例子中的"-"或ba(以及之后的參數),我們稱之為?non-flag參數。

3)兩個連續的"--"

if s[1] == '-' {num_minuses++if len(s) == 2 { // "--" terminates the flagsf.args = f.args[1:]return false, nil} }

也就是,當遇到連續的兩個"-"時,解析停止。如:

./nginx --

*下面這種情況是可以正常解析的:

./nginx -c --

這里的"--"會被當成是 c 的值

parseOne 方法中接下來是處理 -flag=x 這種形式,然后是 -flag 這種形式(bool類型)(這里對bool進行了特殊處理),接著是 -flag x 這種形式,最后,將解析成功的 Flag 實例存入 FlagSet 的 actual map 中。

另外,在 parseOne 中有這么一句:

也就是說,每執行成功一次 parseOne,f.args 會少一個。所以,FlagSet 中的 args 最后留下來的就是所有 non-flag 參數。

1.4.4 Arg(i int) 和 Args()、NArg()、NFlag()

Arg(i int) 和 Args() 這兩個方法就是獲取 non-flag 參數的;NArg()獲得 non-flag 的個數;NFlag() 獲得 FlagSet 中 actual 長度(即被設置了的參數個數)。

1.4.5 Visit/VisitAll

這兩個函數分別用于訪問 FlatSet 的 actual(存放參數值實際Flag的map) 和 formal(存放參數名默認Flag的map) 中的 Flag,而具體的訪問方式由調用者決定。

具體使用demo見:
func (f FlagSet) Visit(fn func(Flag))
func (f FlagSet) VisitAll(fn func(Flag))

1.4.6 PrintDefaults()

打印所有已定義參數的默認值(調用 VisitAll 實現),默認輸出到標準錯誤,除非指定了 FlagSet 的 output(通過SetOutput() 設置)。
在1.1示例中有使用。還可以參考:
func PrintDefaults()

1.4.7 Set(name, value string)

將名稱為name的flag的值設置為value, 成功返回nil。
demo請見:
func Set(name, value string) error

1.5 總結

使用建議:雖然上面講了那么多,一般來說,我們只簡單的定義flag,然后 parse,就如同開始的例子一樣。

如果項目需要復雜或更高級的命令行解析方式,可以使用 https://github.com/urfave/cli 或者 https://github.com/spf13/cobra 這兩個強大的庫。

總結

以上是生活随笔為你收集整理的golang flag包(命令行参数解析)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产91成人 | 久久免费精品国产 | 中文字幕a∨在线乱码免费看 | 国产美女精品久久久 | 国产精品视频区 | 亚洲精品乱码久久久久久按摩 | 久久久久久久久久久免费 | 二区三区中文字幕 | 日本中文字幕在线播放 | 日韩超碰 | 免费av小说 | 久久久精品视频网站 | 久久婷亚洲五月一区天天躁 | av网站在线观看免费 | 欧美日韩高清在线 | 国产黄色一级片在线 | 国产尤物视频在线 | 国产精品高潮久久av | 日日碰狠狠添天天爽超碰97久久 | 97国产一区 | 欧美贵妇性狂欢 | 日韩精品在线视频 | 99精品影视 | 国产综合久久 | 亚洲国产欧美在线人成大黄瓜 | 亚洲欧美日韩在线看 | 免费看的黄色网 | 97超碰色 | 99国产精品一区二区 | 中文视频在线播放 | 国产免费精彩视频 | 久久视讯 | 玖玖在线看 | 国产精品久久久久久久免费观看 | 色综合夜色一区 | 91精品一区二区三区蜜臀 | 久久婷五月| 在线观看视频日韩 | 欧美日韩一区久久 | 国产又粗又猛又黄又爽的视频 | 成人毛片100免费观看 | 91看片一区二区三区 | 久久婷婷色 | 国产精品九九九九九九 | 日韩欧美一区二区三区在线 | 久久热亚洲| 日韩一区二区三区视频在线 | 久久精品www人人爽人人 | 99久久99热这里只有精品 | 国产精品欧美日韩 | 999久久久久久久久6666 | 午夜精品av| 欧美精品二区 | 久久视频在线观看中文字幕 | 国产精品永久久久久久久www | 国产精久久久久久久 | 91麻豆产精品久久久久久 | 久久,天天综合 | 中文字幕视频观看 | 国产一级片免费观看 | 亚洲最大成人免费网站 | 麻豆果冻剧传媒在线播放 | 国产亚洲精品久久久久久久久久 | 日韩在线视频线视频免费网站 | 一区二区三区高清在线 | 91麻豆精品国产91久久久久久久久 | 国产一级二级三级视频 | 最新国产在线视频 | 久久与婷婷 | 亚洲精品一区中文字幕乱码 | 中文av一区二区 | 久草在线观看 | 在线免费中文字幕 | 久久久免费毛片 | 久久伦理电影网 | 九九热久久免费视频 | 一本一本久久a久久 | 麻豆免费精品视频 | 成人亚洲欧美 | bbbb操bbbb| 国产一级片播放 | 日韩在线第一区 | 国产精品一区二区吃奶在线观看 | 超碰在线人人草 | 婷婷午夜| 国产精品美女久久久久aⅴ 干干夜夜 | 久久国产精品精品国产色婷婷 | 精品一二三四五区 | 波多野结衣最新 | 国产精品高潮在线观看 | 日韩国产高清在线 | 色综合久久综合网 | 中文字幕视频观看 | 奇米网8888 | 国产一级在线 | 久久理论电影网 | 特级毛片aaa| 97视频在线免费 | 久久精品成人欧美大片古装 | 精品视频免费播放 | 免费黄色看片 | 一区二区三区动漫 | a视频免费在线观看 | 免费观看黄色12片一级视频 | 成人久久国产 | 超碰97中文 | 天天综合久久综合 | 伊人午夜视频 | 三级小视频在线观看 | 亚洲精品小视频在线观看 | 最近久乱中文字幕 | 99久精品| 亚洲天天综合 | 色综合小说 | 国产精品久久久久一区二区 | 国产专区一 | 99re久久资源最新地址 | 黄色一级在线视频 | 男女激情片在线观看 | 91女神的呻吟细腰翘臀美女 | 黄色三级免费看 | 啪啪免费观看网站 | 日韩中文字幕免费看 | 日日夜夜精品免费 | 国产成人免费观看久久久 | 99热这里只有精品久久 | 91在线小视频 | 在线观看日韩精品视频 | 国偷自产中文字幕亚洲手机在线 | 国产一区二区三区四区大秀 | 久久网站免费 | 国产精品99久久久精品免费观看 | 免费三级a | 国产一区观看 | 在线观看中文字幕亚洲 | 欧美精品久久久久久久久久白贞 | 久久少妇av | 人人讲| 国产99久久精品 | 国产色在线视频 | 久久成人综合 | 狠狠躁日日躁 | 国产视频不卡 | 波多野结衣小视频 | 又色又爽又激情的59视频 | 在线视频18在线视频4k | 黄色免费观看网址 | 亚洲影院色 | 国产免费一区二区三区最新 | 国产伦精品一区二区三区四区视频 | 精品一区二区三区久久久 | 久久久久久久久久久久久久av | 黄色性av | 色综合a| 久久黄视频 | 亚洲一区视频免费观看 | 免费在线一区二区三区 | 午夜av免费看 | 在线视频黄| 麻豆精品传媒视频 | 日韩在线视频不卡 | 天天射夜夜爽 | 日韩伦理一区二区三区av在线 | 国产精品91一区 | 午夜婷婷在线播放 | 免费久久99精品国产 | 成 人 a v天堂| 91精品啪在线观看国产81旧版 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 精品久久久久久一区二区里番 | 亚洲精品视频第一页 | 成人av电影免费在线观看 | 在线观看免费日韩 | 香蕉视频导航 | 亚洲人成免费 | 成人国产精品av | 丝袜av网站 | 中文字幕美女免费在线 | 国产品久精国精产拍 | 国产精品理论视频 | 一区二区三区在线视频111 | 国产一区 在线播放 | 国产精品丝袜 | 成人午夜电影在线播放 | 一区二区三区在线观看免费视频 | 不卡的av在线播放 | 中文字幕电影在线 | 综合网伊人 | 成年人精品| 欧美精品一区二区免费 | 国产精品精品久久久久久 | 成人在线视频网 | 夜夜视频资源 | av网站免费线看精品 | 91在线精品一区二区 | 久久国产精品一区二区三区四区 | 国产专区精品视频 | 激情五月在线 | av三级在线播放 | 精品99久久| 亚洲一级免费观看 | 日韩久久久久 | 免费网址你懂的 | 日韩一区二区三区高清免费看看 | 一本之道乱码区 | 成人在线观看影院 | 在线中文字幕网站 | 91丨九色丨丝袜 | 91夫妻视频| 97精品欧美91久久久久久 | 六月丁香六月婷婷 | 久草视频视频在线播放 | 激情偷乱人伦小说视频在线观看 | 久操操| 久久久久国产一区二区三区四区 | 婷婷六月天在线 | 欧美日韩伦理一区 | 青青河边草观看完整版高清 | 精品9999 | www.色五月.com| 中文字幕av在线 | 日韩特级毛片 | 久久久精品国产免费观看同学 | 国产成人黄色在线 | 亚洲精品字幕在线观看 | 香蕉精品视频在线观看 | 国产午夜亚洲精品 | 五月色婷| 精品国产一区二区三区蜜臀 | 久久久国产精品网站 | 国产成人一区二区三区电影 | www.久久成人| 综合久久五月天 | 91高清一区 | 网站免费黄色 | 二区三区在线 | 亚洲精品免费在线视频 | 欧美在线一级片 | 久久99久久99精品中文字幕 | 99热播精品 | 中文字幕色婷婷在线视频 | 免费观看一级特黄欧美大片 | 日日爽夜夜操 | 色综合天天综合网国产成人网 | 激情综合五月网 | 正在播放日韩 | 激情视频在线高清看 | 丁香一区二区 | 国产一区视频在线观看免费 | 波多野结衣精品 | 欧美一级淫片videoshd | 91视频啊啊啊 | 丁香激情视频 | 精品999久久久 | 91九色国产 | 亚洲老妇xxxxxx | 亚洲精品国产精品国产 | 国产福利精品一区二区 | 日韩久久久久久久久 | 亚洲在线精品视频 | 激情文学综合丁香 | 久久黄色免费视频 | 国产精品18久久久久vr手机版特色 | 干天天 | 亚洲理论片 | 午夜三级在线 | 伊人五月综合 | av资源在线看 | 激情综合网五月 | 日韩在线观看中文 | 国产美女精品 | 日日碰狠狠躁久久躁综合网 | 手机成人在线电影 | www.在线看片.com | 国产 日韩 欧美 在线 | 色婷婷亚洲综合 | 伊人欧美 | 久久久精品网站 | 缴情综合网五月天 | 视频一区二区视频 | www.888.av | 国产美女免费视频 | 久久激五月天综合精品 | 国产毛片久久 | 91丨九色丨国产丨porny精品 | 999视频网| 中文字幕一区二区三区久久蜜桃 | 91黄在线看 | 国产一区 在线播放 | 91麻豆传媒 | 国产一在线精品一区在线观看 | 久久久久久久国产精品影院 | 日韩av午夜在线观看 | 国产一区播放 | 青青射 | 亚洲精品国产区 | 大型av综合网站 | 国产在线观看h | 中文字幕一区二区三区视频 | 国产亚洲午夜高清国产拍精品 | 久久精品电影网 | 国产一级做a爱片久久毛片a | 成人小视频在线观看免费 | www麻豆视频 | 毛片一级免费一级 | 久久8| 亚洲高清资源 | 久久五月婷婷丁香社区 | 午夜视频在线观看网站 | 久久久久网址 | 99热只有精品在线观看 | www麻豆视频 | 国产精品久久久久久久久久久久午 | 免费黄a| 成人中文字幕在线观看 | 日韩在线视频在线观看 | 国产人成精品一区二区三 | 18岁免费看片 | 国产精品 日韩精品 | 综合在线观看 | 国内精品久久久久久久久久 | 午夜在线免费观看视频 | 91精品国产三级a在线观看 | 欧美伦理一区二区三区 | 亚洲精品国偷自产在线91正片 | 女人魂免费观看 | 日韩精品中文字幕在线不卡尤物 | 毛片随便看 | 国产精品一区二区果冻传媒 | 欧美性粗大hdvideo | 免费毛片一区二区三区久久久 | 国产日韩精品一区二区 | 亚洲电影一区二区 | 久久精品久久精品久久 | 人人澡人人舔 | 成人av手机在线 | 黄色aaa毛片 | 免费试看一区 | 色视频网站免费观看 | 日韩精品免费专区 | 精品中文字幕在线 | 欧美韩国在线 | 在线看v片成人 | 中文在线中文a | 日日夜夜噜噜噜 | 91漂亮少妇露脸在线播放 | 国产精品毛片网 | 激情久久久久久久久久久久久久久久 | 国产护士在线 | 欧美日韩久 | 伊人久久国产精品 | 色婷婷久久 | 果冻av在线 | 久久毛片高清国产 | 久久久久免费精品国产 | 97网在线观看 | 国内精品亚洲 | 一区二区三区不卡在线 | 久久综合久久八八 | a视频在线| 婷婷亚洲激情 | 亚洲日本国产精品 | 美女搞黄国产视频网站 | 免费看毛片网站 | 中文字幕一区av | 精品视频9999| 99久久网站 | 国产精品成人一区二区三区吃奶 | 免费日韩在线 | 中文字幕免 | av网在线观看 | 久久久91精品国产 | 九九九九精品 | 欧美一区二区三区在线观看 | 绯色av一区 | 久久夜色精品国产欧美乱 | 一区二区三区四区在线 | 不卡的一区二区三区 | 国产亚洲在线视频 | 午夜久久影视 | 日本中文字幕网 | 美女黄频视频大全 | www.综合网.com | 久久99精品国产一区二区三区 | 中文字幕免费国产精品 | 国产精品久久久影视 | 蜜桃视频色 | 麻花豆传媒mv在线观看网站 | 特级毛片爽www免费版 | 日韩欧美综合精品 | 六月激情丁香 | 揉bbb玩bbb少妇bbb| 欧美成人黄色片 | av在线播放国产 | 久久久精品国产免费观看同学 | 久久久穴 | 婷婷开心久久网 | 精品国产欧美一区二区 | 欧美日韩国产一区二区在线观看 | 久久五月激情 | 美女黄频| 欧美另类网站 | 日韩精品一二三 | 成年人三级网站 | 久久久精品电影 | 99视频在线免费 | 久久图 | 精品一区二区三区在线播放 | 国产欧美在线一区 | 国产精品99蜜臀久久不卡二区 | 中文av网站 | 在线观看免费av网 | 国产成人亚洲在线观看 | 午夜美女福利 | 色综合天天在线 | 在线欧美最极品的av | 色综合天天天天做夜夜夜夜做 | 2021国产在线 | 国产群p视频 | 久久久久免费电影 | 久草在线官网 | 国产精品久久久亚洲 | 久久久伊人网 | 免费在线观看91 | 久久综合之合合综合久久 | www.一区二区三区 | 久草精品免费 | 亚洲 综合 激情 | 久久专区 | 久久久久久久看片 | 免费视频 三区 | 久久免费视频99 | 香蕉网在线播放 | 成人午夜精品 | 69xxxx欧美 | 天天激情综合 | 超碰在线中文字幕 | 精品美女国产在线 | 久久久久综合精品福利啪啪 | 国产精品久久久久久电影 | 亚洲伦理一区 | 四虎永久视频 | 久久久国产成人 | 免费精品视频在线观看 | 久久精品免费观看 | 最近中文国产在线视频 | 欧美在线99 | 国产一级视频免费看 | 激情欧美丁香 | 97偷拍在线视频 | 中文在线免费视频 | 精品视频免费播放 | 久久免费毛片视频 | 米奇狠狠狠888| 国产一线二线三线在线观看 | 欧洲成人av | 激情五月婷婷激情 | 免费看国产视频 | 国产亚洲精品久久久久久久久久 | 国产精品无av码在线观看 | 精品视频免费久久久看 | 中文字幕免费成人 | 久久黄视频 | 欧美色图另类 | 狠狠gao| 天天爱天天操天天射 | www黄免费 | 午夜电影av | 最近最新最好看中文视频 | 综合天天网 | 天天插综合 | 视频 国产区 | 一二区精品 | 国内久久久久 | 久久电影网站中文字幕 | 91精品推荐| 精品国产免费久久 | 国产精品一区二区久久久 | 麻豆视频在线播放 | 日韩免费在线看 | 最新色站| 综合久久久久 | 四虎影视精品永久在线观看 | 日本精品免费看 | 波多野结衣视频一区二区三区 | 成人手机在线视频 | 精品成人网 | 日韩天堂在线观看 | 国产原创在线 | 日日操网| 亚洲精品合集 | 欧美九九九 | 午夜精品久久久久久久99婷婷 | a级国产乱理伦片在线观看 亚洲3级 | 日韩专区在线播放 | 久久久久久久久亚洲精品 | 五月婷婷中文网 | 国产精品99页 | 午夜18视频在线观看 | 在线观看黄av | 色a资源在线 | 日韩高清成人 | 婷婷在线免费视频 | 免费观看完整版无人区 | 日韩在线影视 | 久久国语露脸国产精品电影 | 中字幕视频在线永久在线观看免费 | 免费在线中文字幕 | 久久久精品二区 | 国产一级在线视频 | 一区二区精品视频 | www.91av在线| 久久精品日产第一区二区三区乱码 | 国产.精品.日韩.另类.中文.在线.播放 | 欧美在线视频一区二区三区 | 99视频在线观看免费 | 在线观看视频中文字幕 | 91成人区| 亚洲欧美日本国产 | 国产 日韩 中文字幕 | 日韩免费在线 | 久久久久久久国产精品 | 国内揄拍国内精品 | 97免费在线观看视频 | 亚洲影视资源 | 在线观看视频一区二区三区 | 久久久精品国产一区二区三区 | 欧美日韩精品网站 | 中文字幕日韩一区二区三区不卡 | 国产精品一区二区在线观看 | av一级片在线观看 | 在线婷婷| 国产一区视频免费在线观看 | 国产精品美女久久久久久久久 | 亚洲色图22p | 国产亚州av | 最近日本中文字幕 | 精品久久久久久亚洲综合网 | 国产精品一区二区三区视频免费 | 色瓜| 欧美日韩国语 | 粉嫩av一区二区三区四区 | 天天艹天天 | 精品一区二区久久久久久久网站 | 日韩欧美国产精品 | 在线免费国产 | 久久久久久久国产精品影院 | 天天综合天天综合 | 日韩免费网址 | 国产91欧美 | 久久黄色精品视频 | 欧美一级黄色视屏 | 视频一区久久 | 中文字幕av在线播放 | 精品国产免费观看 | 亚洲 欧洲 国产 日本 综合 | 麻豆成人网 | 免费在线观看黄网站 | 久久999久久 | 久久久久久久久久久久久影院 | 久久久久久久久久久免费av | 欧美成年人在线视频 | 人人艹人人 | 91九色成人蝌蚪首页 | 狠狠地日 | 激情五月综合网 | 欧美国产一区二区 | 91中文字幕网 | 99视频精品全部免费 在线 | 久久久在线视频 | 日韩欧美亚州 | 成人91免费视频 | 中文字幕久久亚洲 | 久久久精品免费看 | 亚洲三级在线播放 | 国产私拍在线 | 欧美日韩精品在线观看 | 久久九九视频 | 国产精品久久久久aaaa九色 | 在线免费观看亚洲视频 | 亚洲精品系列 | 中文字幕观看在线 | 丁香在线观看完整电影视频 | 亚洲视频久久 | 高清视频一区 | 99久久国产免费,99久久国产免费大片 | 草久久久 | 成 人 黄 色 视频 免费观看 | 国产精品久久久久久久av大片 | 国产高清视频在线免费观看 | 91.精品高清在线观看 | 中文字幕日韩免费视频 | 欧美va天堂va视频va在线 | 亚洲精品乱码久久久久久按摩 | 国内精品久久久久久久久久久 | 日日操日日操 | 伊人久操| 又污又黄的网站 | 夜夜看av | 97精产国品一二三产区在线 | 亚洲精品一区二区在线观看 | 久久综合桃花 | 国产精品不卡 | 国产精品一区二区免费看 | 五月婷婷婷婷婷 | 亚洲国产精品久久久 | 国产精品99久久久久人中文网介绍 | 国产精品6999成人免费视频 | 国产高清无线码2021 | 国产91精品久久久久久 | 日本一区二区三区免费看 | 在线小视频你懂的 | 乱子伦av| 91黄色小视频 | 国产精品欧美久久久久三级 | 欧美一级视频一区 | 亚洲国产网址 | 国产毛片久久 | 黄色毛片视频免费 | 亚洲国内精品 | 日本黄网站| 丰满少妇久久久 | 国产精品永久久久久久久www | 亚洲久在线 | 国产区高清在线 | 欧美日韩中文字幕在线视频 | 精品国产欧美 | 天天插综合网 | 国产精品自在线 | 狠狠五月天| 玖玖在线观看视频 | 亚洲成人精品在线观看 | 91精品国产欧美一区二区成人 | 在线国产日本 | 久久99国产综合精品 | 日韩在线观看网站 | 国产午夜精品一区二区三区欧美 | 最新av观看 | 中文字幕 成人 | 日韩在线观看精品 | 在线观看av不卡 | 美女网站免费福利视频 | 久久理伦片 | 国产亚洲人成网站在线观看 | 在线观看午夜av | 天天操月月操 | 国产美女视频一区 | 成人免费在线播放视频 | 天天干天天插伊人网 | 久久午夜电影网 | 中文字幕在线影院 | 亚洲精品玖玖玖av在线看 | 综合久久综合久久 | 久久在线免费 | 精品一区免费 | 日韩黄色一级电影 | av电影免费 | 日本护士三级少妇三级999 | 亚洲区色| 最近2019年日本中文免费字幕 | 国产一区二区三区免费在线 | 国产伦精品一区二区三区照片91 | 国产日韩欧美在线播放 | 成人福利av | 欧美一级性 | 午夜在线免费观看 | 久久免费一 | av亚洲产国偷v产偷v自拍小说 | 97在线资源 | 超碰97人人在线 | 日韩欧美精品免费 | 国产精品白浆 | 青青河边草手机免费 | 日韩乱码在线 | 日韩成人免费在线观看 | 亚洲成a人片综合在线 | 狠狠激情中文字幕 | 99r国产精品 | 精品久久久久久久 | 深夜福利视频一区二区 | 在线免费av播放 | 天天艹天天| 天天干天天上 | 美女视频黄色免费 | 日韩视频a | 午夜视频在线观看一区二区 | 国产又粗又猛又爽又黄的视频免费 | 97超碰成人在线 | 久久黄页| 在线亚洲日本 | 午夜国产影院 | 911久久香蕉国产线看观看 | 国产精品免费av | 日韩电影中文,亚洲精品乱码 | 精品国产乱码一区二区三区在线 | 国产精品 国产精品 | 色99网| 一级一片免费视频 | 日韩中文幕 | 亚洲免费永久精品国产 | 91成人短视频在线观看 | 久久伦理| 天天操天天操天天 | 国产精品亚洲精品 | 中文在线8新资源库 | 成人av一区二区三区 | 狠狠久久综合 | 成人av在线一区二区 | 国产精品99久久久久久久久 | 精品久久久久久亚洲综合网站 | 亚洲高清在线观看视频 | 婷婷国产在线观看 | 特黄一级毛片 | 三级小视频在线观看 | 日日碰狠狠添天天爽超碰97久久 | 国产精品麻豆果冻传媒在线播放 | 亚洲高清视频在线观看 | 99欧美精品 | 999男人的天堂 | 人人藻人人澡人人爽 | 日韩精品专区在线影院重磅 | 中文字幕视频网站 | 91免费高清| 国内小视频在线观看 | 视频一区二区精品 | 在线观看黄污 | 青青河边草手机免费 | 欧美日韩国产一区二区三区 | 视频在线在亚洲 | 精品久久久久一区二区国产 | 中文字幕免费观看全部电影 | 久久超级碰视频 | 免费在线视频一区二区 | 国产精品高清在线 | 中文字幕在线观看网站 | 久久精品伊人 | 国产成人三级 | 欧美精品v国产精品v日韩精品 | 99精品乱码国产在线观看 | 日日操天天操狠狠操 | 在线网站黄 | 久久成人黄色 | 午夜国产一区 | 国产91精品一区二区麻豆网站 | 欧美中文字幕久久 | 日韩精品久久中文字幕 | 久久电影国产免费久久电影 | 91色亚洲| 亚洲综合国产精品 | 日韩手机视频 | 欧美日韩在线播放 | 久久国产精品久久w女人spa | 国产日韩三级 | 99久热在线精品视频观看 | 久久香蕉影视 | 激情丁香久久 | 91爱爱网址 | 在线免费精品视频 | 怡红院av久久久久久久 | 九九视频精品免费 | 中文字幕有码在线观看 | 日韩高清免费无专码区 | 在线国产能看的 | 国产综合精品一区二区三区 | 91精品国自产在线观看欧美 | 国产伦精品一区二区三区高清 | 精品久久久久久亚洲综合网 | 极品中文字幕 | 久久专区| 国产精品视频专区 | 91人人爽人人爽人人精88v | 欧美日韩不卡在线 | 久久久久久高清 | 国产91成人 | 麻豆va一区二区三区久久浪 | 天天操比 | 国产精品久久久一区二区三区网站 | 国产黄色片一级三级 | 午夜在线免费观看视频 | 亚洲一片黄| 欧美成人va| 日韩专区av| 黄色亚洲片 | 免费国产在线精品 | 亚洲黄色小说网 | 久久人人艹 | 欧美一区二区三区在线播放 | 中文字幕av在线免费 | 国产破处在线视频 | 国产精品片 | 美女搞黄国产视频网站 | av天天色 | 成人亚洲综合 | 国内视频在线 | 国产精品乱码久久 | 激情视频在线高清看 | av成人免费观看 | 最新动作电影 | 黄色网址中文字幕 | 国产91精品看黄网站 | 天天草av| 亚洲艳情 | 亚洲 成人 欧美 | 黄色一级大片免费看 | 欧洲精品亚洲精品 | 日本中文字幕在线播放 | 丝袜美腿av | 夜色成人av| 久久亚洲精品电影 | 亚洲 欧美 成人 | 成人av在线影视 | 丁香综合av | 91精品久 | 狠狠色丁香婷婷综合欧美 | 精品久久久久久久久久久久 | 国产字幕av| 久久五月天色综合 | 欧美巨大荫蒂茸毛毛人妖 | 国产精品视频 | 日韩在线观看三区 | 操操日 | 开心色激情网 | 狠狠ri | 成人av在线网 | 精品夜夜嗨av一区二区三区 | 国产黄色精品 | 婷婷激情欧美 | 涩涩网站在线观看 | 国产色爽 | 亚洲高清视频在线播放 | 国产五月 | 少妇bbb| 亚洲国产影院 | 久久老司机精品视频 | 久久天天躁夜夜躁狠狠85麻豆 | 国产精品系列在线观看 | 一本一道久久a久久精品蜜桃 | 激情网综合 | 91自拍成人 | 国产精品24小时在线观看 | 91亚洲网站| 精品亚洲免费视频 | a在线观看视频 | 99亚洲精品视频 | 黄色影院在线播放 | 五月婷婷黄色 | 91av蜜桃| 丁香 久久 综合 | 三级午夜片 | 99热在| 69视频网站 | 久热爱 | 91精品视频播放 | 国产精品美女毛片真酒店 | 日韩一区二区三区在线观看 | 欧美 国产 视频 | av片在线观看免费 | 亚洲综合色站 | 狠狠色丁香婷婷综合最新地址 | 最新国产精品拍自在线播放 | 成人免费网站在线观看 | 日韩欧美国产免费播放 | 人人爽人人爽av | 在线日韩av | 99视频精品| 亚洲年轻女教师毛茸茸 | 久久视频免费在线 | 九九精品视频在线观看 | 激情欧美在线观看 | 西西4444www大胆艺术 | 在线91观看| www.国产高清 | 成人av一区二区兰花在线播放 | 午夜精品久久久久久久99 | 国产成人精品午夜在线播放 | 日韩在线精品一区 | 在线国产黄色 | 在线观看av片 | 国产黄在线播放 | 亚洲精品国产麻豆 | 免费看一级黄色大全 | 5月丁香婷婷综合 | 国产精品免费看久久久8精臀av | 亚洲精品国精品久久99热 | 久久久久激情 | 美女在线观看av | 91精品久久久久久久久 | 日韩在线电影一区 | 中文字幕字幕中文 | 在线综合色 | 欧美激情精品一区 | 天堂在线一区 | 97视频在线免费观看 | 精品欧美一区二区三区久久久 | 午夜精品福利影院 | 欧美一级片免费在线观看 | 久av在线 | 欧美日韩亚洲在线观看 | 欧美国产不卡 | 免费在线观看黄网站 | 一区二区三区免费在线观看 | 日韩18p| 中文字幕精品www乱入免费视频 | 麻豆精品视频 | 成人在线视频观看 | 国产一在线精品一区在线观看 | 国产精品亚洲成人 | 97香蕉久久超级碰碰高清版 | 片网址| 狠狠躁夜夜av | 中文久草 | 国产精品18p | 干综合网 | 狠狠激情中文字幕 | 欧美精品v国产精品 | av888av.com| 人成在线免费视频 | 日韩网站在线播放 | 亚洲视频免费在线看 | 免费不卡中文字幕视频 | 不卡中文字幕在线 | 日韩电影久久 | 久久精品视频在线观看 | 国产视 | 色婷婷狠狠五月综合天色拍 | 最新av网址在线 | 五月开心六月伊人色婷婷 | 久免费视频 | 最近更新好看的中文字幕 | 18国产精品白浆在线观看免费 | 91伊人久久大香线蕉蜜芽人口 | 成人avav| 国产在线超碰 | 久久精品人人做人人综合老师 | 成人av在线影视 | 久久国产美女视频 | 香蕉视频在线看 | 丝袜制服天堂 | 在线91网| 国产做a爱一级久久 | 欧美午夜精品久久久久久浪潮 | 四虎成人精品永久免费av九九 | 久久久久亚洲精品成人网小说 | 国产高清在线精品 | 久久久精品国产免费观看一区二区 | 免费观看国产精品视频 | 久久久国产电影 | 探花视频在线观看+在线播放 | 四虎影视成人永久免费观看视频 | 日日爱网址 | 午夜美女网站 | 五月综合激情婷婷 | 97超碰人人澡人人爱 | 四虎免费av | 色天天中文 | 午夜99| 日韩精品你懂的 | 国产精品成人一区二区三区 | 97在线视频观看 | 91福利试看 | 色a网| 亚洲三级毛片 | 天天爱天天干天天爽 | 亚洲国产精品视频在线观看 | 欧美一二三区在线观看 | 国产福利一区在线观看 | 精品一区免费 | 九精品 | 亚洲国产无 | 中文永久免费观看 | 国产涩涩网站 | 免费网站观看www在线观看 | 在线亚洲播放 | 成人免费视频网站在线观看 | 日韩a在线观看 | 最新黄色av网址 | 久久99在线 | 中文国产成人精品久久一 | 亚洲一区二区三区毛片 | 在线成人免费av | 超碰伊人网 | 丁香五香天综合情 | 97精品国产一二三产区 | 免费影视大全推荐 | 久热电影| 丝袜美腿av | 丁香网婷婷| 天天爱天天操天天射 | 国内精品视频在线 | 久久精品视频网 | 国产精品自产拍在线观看网站 | 国产999精品久久久久久 | 超碰午夜 | 国产亚洲精品v | 香蕉久久久久 | 亚洲资源一区 | 亚洲91网站 | 九九久|