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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Go语言学习之3 流程控制、函数

發(fā)布時間:2023/11/30 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go语言学习之3 流程控制、函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

主要內容:

1. strings和strconv使用
2. Go中的時間和日期類型
3. 指針類型
4. 流程控制
5. 函數詳解

1. strings和strconv使用

//strings 1. strings.HasPrefix(s string, prefix string) bool:判斷字符串s是否以prefix開頭 。 2. strings.HasSuffix(s string, suffix string) bool:判斷字符串s是否以suffix結尾。 3. strings.Index(s string, str string) int:判斷str在s中首次出現(xiàn)的位置,如果沒有 4. strings.LastIndex(s string, str string) int:判斷str在s中最后出現(xiàn)的位置,如果沒有 5. strings.Replace(str string, old string, new string, n int)string:字符串替換 6. strings.Count(str string, substr string)int:字符串計數 7. strings.Repeat(str string, count int)string:重復count次str 8. strings.ToLower(str string)string:轉為小寫 9. strings.ToUpper(str string)string:轉為大寫 10. strings.TrimSpace(str string) string:去掉字符串首尾空白字符strings.Trim(str string, cut string) string:去掉字符串首尾cut字符strings.TrimLeft(str string, cut string) string:去掉字符串首cut字符strings.TrimRight(str string, cut string) string:去掉字符串首cut字符 11. strings.Fields(str string) []string:返回str空格分隔的所有子串的slicestrings.Split(str string, split string) []string:返回str split分隔的所有子串的slice 12. strings.Join(s1 []string, sep string) string:用sep把s1中的所有元素鏈接起來//strconv 13. strconv.Itoa(i int) string:把一個整數i轉成字符串 14. strconv.Atoi(str string)(int, error):把一個字符串轉成整數

例子:

1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 "strconv" 7 ) 8 9 func main() { 10 var res bool 11 //HasPrefix 12 res = strings.HasPrefix("https://www.baidu.com", "https://") //true 13 fmt.Printf("%v\n", res) 14 res = strings.HasPrefix("https://www.baidu.com", "albaba") //false 15 fmt.Printf("%v\n", res) 16 17 //HasSuffix 18 res = strings.HasSuffix("/root/temp/", "/") //true 19 fmt.Printf("%v\n", res) 20 res = strings.HasSuffix("/root/temp/", "=") //false 21 fmt.Printf("%v\n", res) 22 23 var result int 24 //Index 25 result = strings.Index("hahahelloworld", "he") //4 26 fmt.Printf("%v\n", result) 27 28 //LastIndex 29 result = strings.LastIndex("hahahelloworldhe", "he") //14 30 fmt.Printf("%v\n", result) 31 32 var result2 string 33 //Replace 34 result2 = strings.Replace("hahahelloworldhe", "ha", "HA", 1) //HAhahelloworldhe 35 fmt.Printf("%v\n", result2) 36 result2 = strings.Replace("hahahelloworldhe", "ha", "HA", -1) //HAHAhelloworldhe 37 fmt.Printf("%v\n", result2) 38 39 //Count 40 result = strings.Count("hahahelloworldhe", "ha") //2 41 fmt.Printf("%v\n", result) 42 43 //Repeat 44 result2 = strings.Repeat("ha", 3) //hahaha 45 fmt.Printf("%v\n", result2) 46 47 //ToLower 48 result2 = strings.ToLower("heLLo") //hello 49 fmt.Printf("%v\n", result2) 50 51 //ToUpper 52 result2 = strings.ToUpper("hello") //HELLO 53 fmt.Printf("%v\n", result2) 54 55 //TrimSpace 56 result2 = strings.TrimSpace(" hello ") //hello 57 fmt.Printf("%v\n", result2) 58 59 //Trim 60 result2 = strings.Trim("123hello123", "123") //hello 61 fmt.Printf("%v\n", result2) 62 63 //TrimLeft 64 result2 = strings.TrimLeft("123hello123", "123") //hello123 65 fmt.Printf("%v\n", result2) 66 67 //TrimRight 68 result2 = strings.TrimRight("123hello123", "123") //123hello 69 fmt.Printf("%v\n", result2) 70 71 var result3 []string 72 //Fields 73 result3 = strings.Fields("root temp work") 74 for i := 0; i < len(result3); i++ { 75 fmt.Printf("%v\n", result3[i]) 76 } 77 78 //Split 79 result3 = strings.Split("/root/temp/work", "/") 80 for i := 0; i < len(result3); i++ { 81 fmt.Printf("%v\n", result3[i]) 82 } 83 84 //Join 85 result3 = [] string{"root", "temp", "work"} 86 result2 = strings.Join(result3, "/") // root/temp/work 87 fmt.Println(result2) 88 89 //Itoa 90 num := 123 91 result2 = strconv.Itoa(num) // root/temp/work 92 fmt.Printf("%s\n", result2) // 123 93 94 //Atoi 95 str := "12345" 96 number, err := strconv.Atoi(str) // root/temp/work 97 if err != nil { 98 fmt.Printf("Can not convert %s to int\n", str) 99 return 100 } 101 fmt.Printf("%d\n", number) // 12345 102 } example

練習1:判斷一個url是否以http://開頭,如果不是,則加上http://。
練習2:判斷一個路徑是否以"/"結尾,如果不是,則加上/。

1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func urlProcess(url string) string { 9 res := strings.HasPrefix(url, "http://") 10 if !res { 11 url = fmt.Sprintf("http://%s", url) 12 } 13 return url 14 } 15 16 func pathProcess(path string) string { 17 res := strings.HasSuffix(path, "/") 18 if !res { 19 path = fmt.Sprintf("%s/", path) 20 } 21 return path 22 } 23 24 func main() { 25 var ( 26 url string 27 path string 28 ) 29 30 fmt.Println("Input url and path >>") 31 fmt.Scanf("%s%s", &url, &path) 32 33 url = urlProcess(url) 34 path = pathProcess(path) 35 36 fmt.Println("url: ", url) 37 fmt.Println("path: ", path) 38 } 練習1和2

練習3:寫一個函數返回一個字符串在另一個字符串的首次出現(xiàn)和最后出現(xiàn)位置。

1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func strIndex(str string, substr string)(int, int) { 9 var startIndex, endIndex int 10 11 startIndex = strings.Index(str, substr) 12 endIndex = strings.LastIndex(str, substr) 13 14 return startIndex, endIndex 15 } 16 17 func main() { 18 var str, substr string 19 fmt.Println("Input a string >> ") 20 fmt.Scanf("%s%s", &str, &substr) 21 22 start, end := strIndex(str, substr) 23 if start < 0 { 24 fmt.Printf("Can not find %s in %s.\n", substr, str) 25 } else { 26 fmt.Printf("First find %s in %s %d index.\n", substr, str, start) 27 } 28 29 if end < 0 { 30 fmt.Printf("Can not find %s in %s.\n", substr, str) 31 } else { 32 fmt.Printf("Last find %s in %s %d index.\n", substr, str, end) 33 } 34 } 練習3

練習4:寫一個函數分別演示Replace、Count、Repeat、ToLower、ToUpper的用法。
練習5:寫一個函數分別演示TrimSpace、Trim、TrimLeft、TrimRight、Field、Split、以及Join的用法。
練習6:寫一個函數分別演示Itoa、Atoi的用法。

2. Go中的時間和日期類型

1. time包
2. time.Time類型,用來表示時間
3. 獲取當前時間, now := time.Now()
4. time.Now().Day(),time.Now().Minute(),time.Now().Month(),time.Now().Year()
5. 格式化,fmt.Printf("%02d/%02d%02d %02d:%02d:%02d", now.Year()…)
6. time.Duration用來表示納秒
7. 一些常量:
? ? const (
? ? ? ? ?Nanosecond Duration = 1
? ? ? ? ?Microsecond = 1000 * Nanosecond
? ? ? ? ?Millisecond = 1000 * Microsecond
? ? ? ? ?Second = 1000 * Millisecond
? ? ? ? ?Minute = 60 * Second
? ? ? ? ?Hour = 60 * Minute
? ? )
8. 格式化:
? ? now := time.Now()
? ? fmt.Println(now.Format(“02/1/2006 15:04”))
? ? fmt.Println(now.Format(“2006/1/02 15:04”))
? ? fmt.Println(now.Format(“2006/1/02”))

練習6:寫一個程序,獲取當前時間,并格式化成 2017/06/15 08:05:00形式。

1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func main() { 9 now := time.Now() 10 fmt.Println(now.Format("02/1/2006 15:04")) // 12/2/2019 18:13 11 fmt.Println(now.Format("2006/1/02 15:04")) // 2019/2/12 18:13 12 fmt.Println(now.Format("2006/1/02")) // 2019/2/12 13 } 練習6

練習7:寫一個程序,統(tǒng)計一段代碼的執(zhí)行耗時,單位精確到微秒。

1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func costTime() { 9 for i := 0; i < 100000000; i++ { 10 11 } 12 } 13 14 func main() { 15 start := time.Now().UnixNano() // ns 16 costTime() 17 end := time.Now().UnixNano() 18 19 fmt.Printf("cost:%d us\n", (end-start)/1000) 20 } 練習7

3. 指針類型

1. 普通類型,變量存的就是值,也叫值類型
2. 獲取變量的地址,用&,比如: var a int, 獲取a的地址:&a
3. 指針類型,變量存的是一個地址,這個地址存的才是值
4. 獲取指針類型所指向的值,使用:*,比如:var *p int, 使用*p獲取p指向的值

練習8:寫一個程序,獲取一個變量的地址,并打印到終端。
練習9:寫一個函數,傳入一個int類型的指針,并在函數中修改所指向的值。在main函數中調用這個函數,并把修改前后的值打印到終端,觀察結果。

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func test(num int) { 8 fmt.Printf("In the test add %v\n", &num) 9 } 10 11 func changeNum(num *int) { 12 *num = 100 13 } 14 15 func main() { 16 var num int = 10 17 fmt.Printf("In the main add %v\n", &num) //In the main add 0xc04203c1d0 18 test(num) // In the test add 0xc04203c1d8 19 fmt.Printf("num = %d\n", num) // num = 10 20 changeNum(&num) 21 fmt.Printf("num = %d\n", num) //num = 100 22 } 練習8和9

4. 流程控制

1. If / else分支判斷

單個分支

if condition1 { }

兩個分支

if condition1 { } else { }

多個分支

if condition1 { } else if condition2 { } else if condition3 { } else { }

注意:下面這種寫法是錯誤的

if condition1 { } else { }

練習10:寫一個程序,從終端讀取輸入,并轉成整數,如果轉成整數出錯,則輸出 "can not convert to int",并返回。否則輸出該整數。

1 package main 2 3 import ( 4 "fmt" 5 "strconv" 6 ) 7 8 func main() { 9 var str string 10 fmt.Println("Input a number >>") 11 fmt.Scanf("%s", &str) 12 number, err := strconv.Atoi(str) 13 if err != nil { 14 fmt.Printf("Can not convert %s to int\n", str) 15 return 16 } 17 fmt.Printf("%d", number) 18 } 練習10

2. switch case語句
語法:
? ? ? ?switch var {
? ? ? ? ? ?case var1:
? ? ? ? ? ?case var2:
? ? ? ? ? ?case var3:
? ? ? ? ? ?default:
? ? ? ?}

特別注意:go語言中和C語言不一樣,在case后面沒有break語句。

1 switch var { 2 case var1: 3 { 4 語句 5 break; 6 } 7 8 case var2: 9 { 10 語句 11 break; 12 } 13 case var3: 14 { 15 語句 16 break; 17 } 18 default: 19 語句 20 } C語言寫法

寫法1:

var num int = 2 switch num {case 0:fmt.Println("0")case 1:fmt.Println("1")case 2:fmt.Println("2")default:fmt.Printf("%d\n", num) }

寫法2:跨越case的fallthrough

var i = 0 switch i { case 0:fmt.Println("0") // 會執(zhí)行 fallthrough case 1:fmt.Println("1") // 由于上面fallthrough 所以會執(zhí)行 case 2:fmt.Println("2") default:fmt.Println("default") }

注意:加上fallthrough則當前case語句執(zhí)行完成之后會緊接著執(zhí)行相鄰的第一條case。

寫法3:

var i = 0 switch i {//兩個case合并case 0, 1:fmt.Println("0 or 1")case 2:fmt.Println("2")default:fmt.Println("def") }

寫法4:

var i = 0 switch {case i > 0 && i < 10:fmt.Println("i > 0 and i < 10")case i >= 10 && i < 20:fmt.Println("i > 10 and i < 20")default:fmt.Println("default") }

寫法5:

switch i := 15; {case i > 0 && i < 10:fmt.Println("i > 0 and i < 10")case i >= 10 && i < 20:fmt.Println("i > 10 and i < 20")default:fmt.Println("def") }

注意:?i := 15; 后面的分號(;)

?練習11:猜數字,寫一個程序,隨機生成一個0到100的整數n,然后用戶在終端,輸入數字,如果和n相等,則提示用戶猜對了。如果不相等,則提示用戶,大于或小于n。

1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 ) 7 8 func main() { 9 var n int 10 n = rand.Intn(100) 11 12 for { 13 var input int 14 fmt.Println("Input your guess >> ") 15 //注意后面的\n作用,如果沒有的話,則輸入的數和 16 fmt.Scanf("%d\n", &input) 17 flag := false 18 switch { 19 case input == n: 20 fmt.Println("you are right") 21 flag = true 22 case input > n: 23 fmt.Println("bigger") 24 case input < n: 25 fmt.Println("less") 26 } 27 28 if flag { 29 break 30 } 31 } 32 } 練習11

3. for 語句

寫法1:

for 初始化語句; 條件判斷; 變量修改 { } //例如 for i := 0; i < 100; i++ {fmt.Printf("i=%d\n", i) }

練習12:寫一個程序,在終端打印如下圖形。

A AA AAA AAAA AAAAA 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 var row int 9 fmt.Println("Input row number >>") 10 fmt.Scanf("%d", &row) 11 for i := 0; i < row; i++ { 12 for j := 0; j <= i; j++ { 13 fmt.Printf("A") 14 } 15 fmt.Println() 16 } 17 } 練習12

寫法2:

for 條件 { }

例如:下面三個條件為真都是死循環(huán)

for i > 0 {fmt.Println("i > 0") }for true {fmt.Println("i > 0") }for {fmt.Println("i > 0") }

4. for range 語句

寫法3:用來遍歷數組、slice、map、chan

str := "hello world,中國" //漢字占3個字節(jié)for i, v := range str {fmt.Printf("index = %d val = %c byteLen = %d\n", i, v, len([] byte(string(v))))}

5.?break、continue語句

package mainimport "fmt"func main() {str := "hello world,中國"for i, v := range str {if i > 2 {continue}if (i > 3) {break }fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))} }//輸出: //index[0] val[h] len[1] //index[1] val[e] len[1] //index[2] val[l] len[1]

break 語句可以結束 for、switch 和 select 的代碼塊。break 語句還可以在語句后面添加標簽,表示退出某個標簽對應的代碼塊,標簽要求必須定義在對應的 for、switch 和 select 的代碼塊上。例如:

package main import "fmt" func main() { OuterLoop:for i := 0; i < 2; i++ {for j := 0; j < 5; j++ {switch j {case 2:fmt.Println(i, j)break OuterLoopcase 3:fmt.Println(i, j)break OuterLoop}}} }//輸出 說明第10行的break OuterLoop直接跳出外層循環(huán) //0 2

continue 語句可以結束當前循環(huán),開始下一次的循環(huán)迭代過程,僅限在 for 循環(huán)內使用。在 continue 語句后添加標簽時,表示開始標簽對應的循環(huán)。例如:

package main import "fmt" func main() { OuterLoop: //代碼說明:第 10 行將結束當前循環(huán),開啟下一次的外層循環(huán),而不是第 10 行的內循環(huán)。for i := 0; i < 2; i++ {for j := 0; j < 5; j++ {switch j {case 2:fmt.Println(i, j)continue OuterLoop}}} }//輸出: //0 2 //1 2

6.?goto 和 label 語句

goto 語句通過標簽進行代碼間的無條件跳轉。goto 語句可以在快速跳出循環(huán)、避免重復退出上有一定的幫助。Go 語言中使用 goto 語句能簡化一些代碼的實現(xiàn)過程。

package mainfunc main() {i := 0 HERE:print(i)i++if i == 5 {return}goto HERE }//輸出: //01234

?5. 函數

1. 聲明語法:func 函數名 (參數列表) [(返回值列表)] {}

//無參數,無返回值 func add() { }//有參數,無返回值 func add(a int, b int) { }//有參數,一個返回值 func add(a int, b int) int { }//有參數,兩個返回值 func add(a int, b int) (int, int) { }//有參數,兩個返回值 func add(a, b int) (int, int) { }

2. golang函數特點:
? ? a. 不支持重載,一個包不能有兩個名字一樣的函數
? ? b. 函數是一等公民,函數也是一種類型,一個函數可以賦值給變量

1 package main 2 3 import "fmt" 4 5 func add(a, b int) int { 6 return a + b 7 } 8 9 func main() { 10 c := add //將函數add的地址賦值給變量c 11 fmt.Println(c) //0x4888e0 12 13 sum := c(10, 20) 14 fmt.Println(sum) 15 // if (c == add) { //invalid operation: c == add (func can only be compared to nil) 16 // fmt.Println("c equal add") 17 // } 18 } 函數賦值給變量

? ? c. 匿名函數

1 package main 2 3 import "fmt" 4 5 var ( 6 //add存放的是匿名函數的地址 7 add = func(a int, b int) int { 8 return a + b 9 } 10 11 //sub_res存放的是匿名函數執(zhí)行的結果100 12 sub_res = func(a int, b int) int { 13 return a - b 14 }(200, 100) 15 ) 16 17 func test(a, b int) int { 18 //mult存放的是匿名函數的地址 19 mult := func(m int, n int) int { 20 return m*n 21 } 22 return mult(a, b) 23 } 24 25 func main() { 26 fmt.Println(add(100, 200)) //300 27 fmt.Println(sub_res) //100 28 fmt.Println(test(200, 300)) //60000 29 } 匿名函數

? ? d. 多返回值

使用type定義函數類型:?type type_name func 函數名 (參數列表) [(返回值列表)],例如:

1 package main 2 3 import "fmt" 4 5 //定義函數類型 6 type add_func func(int, int) int 7 8 func add(a, b int) int { 9 return a + b 10 } 11 12 // error 因為上面定義的函數類型add_func接收兩個參數,下面定義三個參數。 13 // func add(a, b, c int) int { 14 // return a + b 15 // } 16 17 func sub(a, b int) int { 18 return a - b 19 } 20 21 func operator(op add_func, a int, b int) int { 22 return op(a, b) 23 } 24 25 func main() { 26 c := add 27 fmt.Println(c) 28 sum := operator(c, 100, 200) 29 fmt.Println(sum) //300 30 31 res := operator(sub, 100, 200) 32 fmt.Println(res) //-100 33 } 定義函數類型

3. 函數參數傳遞方式:
? ? 1). 值傳遞
? ? 2). 引用傳遞
? ? 注意1:無論是值傳遞,還是引用傳遞,傳遞給函數的都是變量的副本,不過,值傳遞是值的拷貝。引用傳遞是地址的拷貝,一般來說,地址拷貝更為高效。而值拷貝取決? ? ? ? ? ? ? ? ? ?于拷貝的對象大小,對象越大,則性能越低。
? ? 注意2:map、slice、chan、指針、interface默認以引用的方式傳遞。

4. 命名返回值的名字

1 package main 2 3 import "fmt" 4 5 func add(a, b int) (sum int) { 6 sum = a + b 7 return 8 } 9 10 // 等價于 11 // func add(a, b int) int { 12 // sum = a + b 13 // return sum 14 // } 15 16 func calc(a, b int) (sum int, avg int) { 17 sum = a + b 18 avg = (a +b)/2 19 return 20 } 21 22 // 等價于 23 // func calc(a, b int) (int, int) { 24 // sum = a + b 25 // avg = (a +b)/2 26 // return sum, avg 27 // } 28 29 30 func main() { 31 add_res := add(100, 200) 32 fmt.Println(add_res) //300 33 sum, avg := calc(100, 200) 34 fmt.Println(sum) //300 35 fmt.Println(avg) //150 36 } 命名返回值的名字

5. _標識符,用來忽略返回值

1 package main 2 3 import "fmt" 4 5 func calc(a, b int) (sum int, avg int) { 6 sum = a + b 7 avg = (a +b)/2 8 return 9 } 10 11 func main() { 12 sum, _ := calc(100, 200) 13 fmt.Println(sum) //300 14 } 忽略返回值

6. 可變參數

注意:其中arg是一個slice,通過len(arg)來判斷傳遞參數的個數,通過arg[index]依次訪問所有參數。

//0個或多個參數 func add(arg…int) int { }//1個或多個參數 func add(a int, arg…int) int { }//2個或多個參數 func add(a int, b int, arg…int) int { }

練習14:寫一個函數add,支持1個或多個int相加,并返回相加結果。
練習15:寫一個函數concat,支持1個或多個string相拼接,并返回結果。

1 package main 2 3 import "fmt" 4 5 func add(a int, arg ...int) int { 6 var sum int = a 7 for i := 0; i < len(arg); i++ { 8 sum += arg[i] 9 } 10 11 return sum 12 } 13 14 func concat(a string, arg ...string) (result string) { 15 result = a 16 for i := 0; i < len(arg); i++ { 17 result += arg[i] 18 } 19 20 return 21 } 22 23 func main() { 24 sum := add(10, 3, 3, 3, 3) 25 fmt.Println(sum) //22 26 27 res := concat("hello", " ", "world") 28 fmt.Println(res) //hello world 29 } 可變參數

7. defer用途
? ? 1). 當函數返回時,執(zhí)行defer語句。因此,可以用來做資源清理。
? ? 2). 多個defer語句,按先進后出的方式執(zhí)行。
? ? 3). defer語句中的變量,在defer聲明時就決定了。

1 package main 2 3 import "fmt" 4 5 func test() { 6 i := 0 7 defer fmt.Println(i) 8 i++ 9 return 10 } 11 12 func main() { 13 test() // 0 14 } example1 1 package main 2 3 import "fmt" 4 5 func test() { 6 for i := 0; i < 5; i++ { 7 defer fmt.Printf("%d ", i) 8 } 9 } 10 11 12 func main() { 13 test() // 4 3 2 1 0 14 } example2

defer幾個常用用途:

(1). 關閉文件句柄

1 func read() { 2 file := open(filename) 3 defer file.Close() 4 5 //文件操作 6 } 關閉文件句柄

(2). 鎖資源釋放

1 func read() { 2 mc.Lock() 3 defer mc.Unlock() 4 //其他操作 5 } 鎖資源釋放

(3). 數據庫連接釋放

1 func read() { 2 conn := openDatabase() 3 defer conn.Close() 4 //其他操作 5 } 數據庫連接釋放

練習:

1.編寫程序,在終端輸出九九乘法表。

1 package main 2 3 import "fmt" 4 5 func mutil() { 6 for i := 1; i <= 9; i++ { 7 for j := 1; j <= i; j++ { 8 fmt.Printf("%d*%d=%d\t", i, j, i*j) 9 } 10 fmt.Printf("\n") 11 } 12 } 13 14 func main() { 15 mutil() 16 } 練習1

2.一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如6=1+2+3編程找出1000以內的所有完數。

1 package main 2 3 import "fmt" 4 5 func isPerfNum(num int) bool { 6 res := 0 7 for i := 1; i < num; i++ { 8 if num % i == 0 { 9 res += i 10 } 11 } 12 13 return res == num 14 } 15 16 func process(n int) { 17 for i := 1; i <= n; i++ { 18 if isPerfNum(i) { 19 fmt.Println(i) 20 } 21 } 22 } 23 24 func main() { 25 var num int 26 fmt.Println("Input a number >> ") 27 fmt.Scanf("%d", &num) 28 process(num) 29 } 練習2

3.輸入一個字符串,判斷其是否為回文。回文字符串是指從左到右讀和從右到左讀完全相同的字符串。

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func isPalindNum(str string) bool { 8 flag := true 9 for i := 0; i <= int(len(str)/2); i++ { 10 if str[i] != str[len(str)-i-1] { 11 flag = false 12 break 13 } 14 } 15 16 return flag 17 } 18 19 func main() { 20 var str string 21 fmt.Println("Input a string >> ") 22 fmt.Scanf("%s", &str) 23 if isPalindNum(str) { 24 fmt.Printf("%s is a palindrome number.", str) 25 } 26 } 練習3 V1(無法處理漢字回文數) 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func isPalindNum(str string) bool { 8 temp := [] rune(str) //注意這塊的處理 9 flag := true 10 for i := 0; i <= int(len(temp)/2); i++ { 11 if temp[i] != temp[len(temp)-i-1] { 12 flag = false 13 break 14 } 15 } 16 17 return flag 18 } 19 20 func main() { 21 var str string 22 fmt.Println("Input a string >> ") 23 fmt.Scanf("%s", &str) 24 if isPalindNum(str) { 25 fmt.Printf("%s is a palindrome number.", str) 26 } 27 } 練習3 V2(完整版)

4.輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數字和其它字符的個數。

1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "bufio" 7 ) 8 9 func count(str string) (charCount, spaceCount, numberCount, otherCount int) { 10 t := [] rune(str) 11 for _, v := range t { 12 switch { 13 case v >= 'A' && v <= 'Z': 14 fallthrough 15 case v >= 'a' && v <= 'z': 16 charCount++ 17 case v == ' ': 18 spaceCount++ 19 case v >= '0' && v <= '9': 20 numberCount++ 21 default: 22 otherCount++ 23 } 24 } 25 return 26 } 27 28 29 func main() { 30 reader := bufio.NewReader(os.Stdin) 31 result, _, err := reader.ReadLine() 32 if err != nil { 33 fmt.Println("read from console err:", err) 34 return 35 } 36 cc, sc, nc, oc := count(string(result)) //注意:result為type []byte,因此需要強制轉換為string類型 37 fmt.Printf("charCount = %d, spaceCount = %d, numberCount = %d, otherCount = %d", cc, sc, nc, oc) 38 } 練習4

5. 計算兩個大數相加的和,這兩個大數會超過int64的表示范圍。

1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "bufio" 7 "strings" 8 ) 9 10 func add(str1, str2 string) (result string) { 11 var left int = 0 //進位 12 13 if len(str1) == 0 || len(str2) == 0 { 14 result = "0" 15 return 16 } 17 18 index1 := len(str1) - 1 19 index2 := len(str2) - 1 20 //處理重合部分 21 for index1 >= 0 && index2 >= 0 { 22 c1 := str1[index1] - '0' 23 c2 := str2[index2] - '0' 24 25 sum := int(c1) + int(c2) + left 26 if sum >= 10 { 27 left = 1 28 } else { 29 left = 0 30 } 31 32 c3 := (sum%10) + '0' 33 result = fmt.Sprintf("%c%s", c3, result) 34 35 index1-- 36 index2-- 37 } 38 39 //處理str1長度大于str2情況 40 for index1 >= 0 { 41 c1 := str1[index1] - '0' 42 43 sum := int(c1) + left 44 if sum >= 10 { 45 left = 1 46 } else { 47 left = 0 48 } 49 50 c3 := (sum%10) + '0' 51 result = fmt.Sprintf("%c%s", c3, result) 52 53 index1-- 54 } 55 56 //處理str1長度小于str2情況 57 for index2 >= 0 { 58 c2 := str2[index2] - '0' 59 60 sum := int(c2) + left 61 if sum >= 10 { 62 left = 1 63 } else { 64 left = 0 65 } 66 67 c3 := (sum%10) + '0' 68 result = fmt.Sprintf("%c%s", c3, result) 69 70 index2-- 71 } 72 73 //處理str1長度等于str2情況 74 if left == 1 { 75 result = fmt.Sprintf("1%s", result) 76 } 77 return 78 } 79 80 func main() { 81 fmt.Println("please input a+b >>") 82 //從console端讀取數據 83 reader := bufio.NewReader(os.Stdin) 84 result, _, err := reader.ReadLine() 85 if err != nil { 86 fmt.Println("read from console err:", err) 87 return 88 } 89 90 //獲取加數與被加數 91 strSlice := strings.Split(string(result), "+") 92 if len(strSlice) != 2 { 93 fmt.Println("please input a+b") 94 return 95 } 96 97 //去除左右空格 98 str1 := strings.TrimSpace(strSlice[0]) 99 str2 := strings.TrimSpace(strSlice[1]) 100 fmt.Println(add(str1, str2)) 101 } 練習5

補充:rune數據類型

例1:

1 package main 2 3 import "fmt" 4 5 func main() { 6 7 var str = "hello 你好" 8 fmt.Println("len(str):", len(str)) //len(str): 12 9 } example

為何輸出12?

golang中string底層是通過byte數組實現(xiàn)的。中文字符在unicode下占2個字節(jié),在utf-8編碼下占3個字節(jié),而golang默認編碼是utf-8。因此輸出12。

例2:

1 package main 2 3 import "fmt" 4 5 func main() { 6 7 var str = "hello 你好" 8 fmt.Println("len(str):", len(str)) //len(str): 12 9 10 temp := [] rune(str) 11 fmt.Println("len(temp):", len(temp)) //len(temp): 8 12 } example2

現(xiàn)在來看rune數據類型官方解釋:

?rune is an alias for int32 and is equivalent to int32 in all ways. It is?used, by convention, to distinguish character values from integer values.

rune是int32的別名,幾乎在所有方面等同于int32,它用來區(qū)分字符值和整數值。type rune = int32。

如果我們預期想得到一個字符串的長度,而不是字符串底層占得字節(jié)長度,該怎么辦?

例3:

1 package main 2 3 import ( 4 "fmt" 5 "unicode/utf8" 6 ) 7 8 func main() { 9 10 var str = "hello 你好" 11 // 方法1: 12 //golang中的unicode/utf8包提供了用utf-8獲取長度的方法 13 fmt.Println("RuneCountInString:", utf8.RuneCountInString(str)) //RuneCountInString: 8 14 15 //方法2: 16 //通過rune類型處理unicode字符 17 temp := [] rune(str) 18 fmt.Println("rune:", len(temp)) //rune: 8 19 } example3

例4:

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 9 var str = "hello 你好" 10 for i := 0; i < len(str); i++ { 11 fmt.Println(str[i]) 12 } 13 14 fmt.Println("--------") 15 16 temp := [] rune(str) 17 for i := 0; i < len(temp); i++ { 18 fmt.Println(temp[i]) 19 } 20 } 21 22 //輸出結果 23 // 104 24 // 101 25 // 108 26 // 108 27 // 111 28 // 32 29 // 228 30 // 189 31 // 160 32 // 229 33 // 165 34 // 189 35 // -------- 36 // 104 37 // 101 38 // 108 39 // 108 40 // 111 41 // 32 42 // 20320 43 // 22909 example4

總結:

golang中一個byte數據類型與rune相似,它們都是用來表示字符類型的變量類型。它們的不同在于:
(1). byte 等同于int8,常用來處理ascii字符。
(2). rune 等同于int32,常用來處理unicode或utf-8字符。

參考文獻:

  • https://www.jianshu.com/p/4fbf529926ca

轉載于:https://www.cnblogs.com/xuejiale/p/10364745.html

總結

以上是生活随笔為你收集整理的Go语言学习之3 流程控制、函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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

免费看毛片网站 | av黄色国产 | 亚洲精选99 | 国产精品精品视频 | 国产中文字幕第一页 | 亚洲视屏在线播放 | 在线观看视频你懂的 | 久草网站在线观看 | 手机色在线 | 久久久在线视频 | 99re中文字幕| 国产91探花 | 91久久久国产精品 | 国产在线p | 99久久精品免费看国产麻豆 | 免费观看性生交大片3 | 成年人免费在线观看网站 | 日日狠狠| 最近中文字幕高清字幕在线视频 | av高清网站在线观看 | 日韩com | 久久精品香蕉视频 | 中文字幕在线观看av | 久久在线播放 | 亚洲欧美在线综合 | 欧美另类sm图片 | 国内精品免费 | 四虎成人精品永久免费av | 97超碰色| 久久久69 | 成人影视免费看 | 97色国产 | 日韩高清av | 97影视| 91精品久久久久久久久 | 国产精品女人久久久久久 | 精品中文字幕在线播放 | 色噜噜日韩精品欧美一区二区 | 国内精品美女在线观看 | 国产在线资源 | 最新中文字幕在线播放 | 国产一级久久久 | 视频一区二区免费 | 香蕉精品在线观看 | 久久综合欧美精品亚洲一区 | 国产午夜剧场 | 国内视频在线观看 | 日韩av成人在线观看 | 日本韩国精品在线 | 一区二区毛片 | 国产精品理论片在线观看 | 一区二区三区 中文字幕 | 黄色日视频 | 婷婷色中文字幕 | 国产成人精品a | 成人av网站在线播放 | 欧美日韩精品综合 | 三上悠亚一区二区在线观看 | 欧美日韩国产精品一区二区三区 | 色婷婷综合在线 | 区一区二区三区中文字幕 | 91在线免费观看网站 | 亚洲国产wwwccc36天堂 | 亚洲2019精品 | 99色精品视频 | 成人福利在线 | 正在播放日韩 | 久草在线免 | 在线不卡视频 | 日韩视频区| 久热超碰| 欧美在线观看小视频 | 国产高清黄色 | 一区二区三区在线免费播放 | 激情视频区 | av免费看电影 | 最新极品jizzhd欧美 | 色操插 | 91中文在线视频 | 亚洲一区二区91 | 免费无遮挡动漫网站 | 国产高清绿奴videos | 五月婷婷色丁香 | 五月天婷婷丁香花 | 婷婷伊人综合亚洲综合网 | 激情影院在线观看 | 又爽又黄在线观看 | 亚州国产精品久久久 | 日韩欧美在线高清 | 成人h电影在线观看 | 国产精品免费在线视频 | 337p西西人体大胆瓣开下部 | 亚洲日韩中文字幕在线播放 | 美女精品国产 | 亚洲精品国产麻豆 | 国产精品亚州 | 99精品乱码国产在线观看 | 国模视频一区二区三区 | 日韩视频免费观看高清完整版在线 | 麻花传媒mv免费观看 | 日韩中文字幕a | 91人人人 | 日韩城人在线 | 玖玖玖在线 | 婷婷六月天丁香 | 国产免费影院 | 久久最新视频 | 国内一区二区视频 | 久99久在线视频 | 最新日韩在线观看 | 国产美女免费视频 | 欧美巨大荫蒂茸毛毛人妖 | 永久免费毛片在线观看 | 色婷婷在线视频 | 国产日韩在线视频 | 亚洲欧美精品一区 | 久久精品3 | 国产一性一爱一乱一交 | 中国成人一区 | 在线观看视频在线 | 成年人看片| 91自拍成人 | www.五月天| 国产黄色片一级 | 国产资源在线视频 | 涩涩色亚洲一区 | 2019精品手机国产品在线 | 81精品国产乱码久久久久久 | 精品a在线| 中国美女一级看片 | 欧美日韩后 | 久久免费视频在线观看30 | 国产激情小视频在线观看 | 色婷婷一 | 91精品国产麻豆国产自产影视 | 免费欧美精品 | 99热都是精品 | 人人看人人爱 | 日韩精品一区二区在线观看 | 91在线视频精品 | 天天夜夜狠狠操 | 国内精品久久影院 | 久草手机视频 | 国产精品乱码在线 | 国产一级视频在线观看 | 亚洲视频大全 | 深夜免费网站 | 成人资源网 | 欧美一级片在线免费观看 | 亚洲精品在线观看不卡 | 三级av小说| 日韩成人免费电影 | 国产精品午夜免费福利视频 | 日韩性色 | 狠狠88综合久久久久综合网 | 亚洲一二三久久 | 欧美日韩一二三四区 | 成人中文字幕av | 欧美精品黑人性xxxx | 天天操福利视频 | 国产成人久久77777精品 | 久久久久国产精品免费网站 | 欧美激情综合网 | 日韩乱理| 国产丝袜 | 国产精品久久久久久一区二区三区 | 美女视频久久久 | 国内精品久久久久影院优 | 久久视频这里有久久精品视频11 | 91精品国产91久久久久久三级 | 一区二区三区精品在线视频 | 久久综合久久综合久久 | 91免费观看视频在线 | 91一区二区在线 | 天天干,天天射,天天操,天天摸 | av不卡免费看 | 日韩一二三区不卡 | 日韩精品中文字幕在线 | 欧美视频日韩视频 | 国产精品久久麻豆 | 91麻豆精品91久久久久同性 | 美女视频黄色免费 | 久久久久电影 | 中文在线字幕免费观看 | 国产高清在线免费 | 国产精品视频久久 | 五月天久久精品 | 婷婷综合久久 | 色婷婷亚洲婷婷 | 中文字幕在线播放av | aaaaaa毛片| 亚洲精品电影在线 | 激情伊人五月天 | 国产一区二区精品91 | 一区二区三区在线视频观看58 | 97人人爽| 91大神精品视频在线观看 | 涩涩色亚洲一区 | 在线播放日韩 | 国产精品资源在线观看 | 欧美污在线观看 | 成人免费毛片aaaaaa片 | av三级av| 国产精品 中文字幕 亚洲 欧美 | 91亚色免费视频 | 亚洲欧美日韩一区二区三区在线观看 | 日韩成人在线免费观看 | 99这里有精品 | 日日干日日 | www.亚洲黄色 | 成人全视频免费观看在线看 | 91成人在线免费观看 | 欧美日韩中 | 国产自制av| 超碰电影在线观看 | 亚洲 欧洲av | 99久久精品国产欧美主题曲 | 亚洲精品在线一区二区 | 丁香久久激情 | 97在线视频网站 | 人人爽人人爽人人爽学生一级 | 婷婷久久五月 | 国产999 | 亚洲精品成人免费 | 免费亚洲黄色 | 黄色av电影在线观看 | 精品久久久久久一区二区里番 | www.com黄色 | 欧美一级日韩三级 | 成年人视频在线观看免费 | 丁香六月婷婷开心婷婷网 | 91精品国自产在线观看欧美 | 狠狠色伊人亚洲综合网站色 | 久久视频在线视频 | 国产精品69av | 色爱区综合激月婷婷 | 在线观看激情av | 国产精品一区二区久久 | 激情黄色av | 国产精品成人aaaaa网站 | 西西444www大胆高清图片 | 高清av在线免费观看 | 亚洲精品在线免费 | 亚洲午夜大片 | 麻豆av一区二区三区在线观看 | 精品国产一区二区三区四 | 亚洲激情视频在线观看 | 久久免费福利视频 | 成人影音在线 | 国产精品女同一区二区三区久久夜 | 欧美日韩一二三四区 | 高清久久久久久 | 亚洲综合欧美精品电影 | 中日韩在线视频 | 久久免费高清视频 | 日本中文在线播放 | 久久久免费观看视频 | 天天色天天射天天干 | 手机av看片| 中文字幕xxxx | bbb搡bbb爽爽爽 | 在线观看mv的中文字幕网站 | 久久在线播放 | 午夜久久网站 | 免费看成人av | 国产精品日韩久久久久 | 欧美成人h版在线观看 | 四虎成人精品 | 成人一区二区三区在线观看 | 国产精品婷婷午夜在线观看 | www.黄色小说.com| 欧美做受xxx | 日本久久电影 | 亚洲视频免费在线观看 | 亚洲激情中文 | 中文字幕乱码在线播放 | 国产免费黄色 | 欧美成人黄 | 99久久综合精品五月天 | 亚洲一区二区三区四区精品 | 在线免费观看成人 | 操操综合 | 一本一道久久a久久精品蜜桃 | 欧美日韩午夜爽爽 | 久久久久久久久久久久久9999 | 国产黄色精品在线 | 国产永久免费高清在线观看视频 | 免费网站黄色 | 99精品国产福利在线观看免费 | 最近久乱中文字幕 | 亚洲 中文 在线 精品 | 91精品久久久久久综合乱菊 | 在线播放一区 | 2021国产视频 | 亚洲精区二区三区四区麻豆 | 日韩欧美网址 | 国产精品9999久久久久仙踪林 | 国产精品你懂的在线观看 | 日韩大片免费在线观看 | 天天天天天干 | 亚洲精品三级 | 欧美日韩国产精品一区二区亚洲 | 久久久久免费精品国产小说色大师 | 色多多污污在线观看 | 97超碰在| 国产在线精品一区二区 | 精品国产一区二区三区在线观看 | 国产精品午夜久久久久久99热 | 国产淫a | 九九视频免费在线观看 | 99精品毛片 | 亚洲精品中文字幕视频 | 日韩a在线 | 国产精品色 | 亚洲综合视频网 | 99视频网址 | 国产一级二级三级在线观看 | 日本中文字幕系列 | 欧美黄污视频 | 久草视频网 | 日本性xxx | 日韩专区 在线 | 色偷偷网站视频 | 欧美特一级片 | 色橹橹欧美在线观看视频高清 | 成人在线播放网站 | 爱色av.com| 日本韩国在线不卡 | 精品女同一区二区三区在线观看 | 成人h在线观看 | 久久综合在线 | 久久高清免费 | 中文字幕在线视频一区二区 | 97天天综合网 | 欧美精品一二三 | 91大神在线看 | 狠狠干电影 | 福利一区二区在线 | 综合久久影院 | 国产成人高清在线 | 在线观看亚洲精品视频 | 蜜臀久久99静品久久久久久 | 亚洲午夜精品久久久久久久久久久久 | 91观看视频 | 国产1区2区 | 欧美a视频在线观看 | 天天爽夜夜爽人人爽一区二区 | 狠狠色丁香久久婷婷综合五月 | 六月丁香在线观看 | 黄色网址国产 | 国产又黄又猛又粗 | 黄色小说免费观看 | 看国产黄色大片 | 免费看十八岁美女 | 欧美日韩二区三区 | 国产999精品久久久久久麻豆 | av中文在线播放 | 亚洲天堂色婷婷 | 亚洲jizzjizz日本少妇 | 九色精品免费永久在线 | 午夜123| 精品国产欧美一区二区 | 免费看的av片 | 国产精品视频久久 | 亚洲人成综合 | 亚洲男男gaygay无套同网址 | 国产一区二区电影在线观看 | 国产黄色在线 | 一区二区激情 | 亚洲精品视频在线观看免费 | 日韩中文在线视频 | 国产精品久久久久久爽爽爽 | 伊人天堂网 | 狠狠色丁香婷婷综合欧美 | 97免费视频在线播放 | 日韩中文幕 | 久久少妇| 2018好看的中文在线观看 | 正在播放亚洲精品 | 久久高清片 | 天天操天天爱天天爽 | 久久人人爽人人片 | 干天天 | 热久久免费视频 | 激情五月婷婷 | 91亚洲在线 | 久久精品人人做人人综合老师 | 久久怡红院 | 9在线观看免费高清完整 | 黄色影院在线免费观看 | 久久av免费电影 | 亚洲精品久久视频 | 四虎在线免费视频 | 狠狠狠色丁香婷婷综合久久88 | 麻豆视频一区 | 999久久国精品免费观看网站 | 国偷自产中文字幕亚洲手机在线 | 男女拍拍免费视频 | 三级动图| 中文字幕一区二区三区四区久久 | 国产91精品看黄网站在线观看动漫 | 麻豆视频免费在线播放 | 久久草精品 | 日本久久中文 | 国产91国语对白在线 | 91网站在线视频 | 成人在线免费观看网站 | www.天天操 | 激情综合网色播五月 | 欧美日韩电影在线播放 | 久久电影网站中文字幕 | 欧美国产日韩一区二区三区 | 欧美色道 | 91完整视频| 日韩欧美视频免费在线观看 | 亚洲乱码国产乱码精品天美传媒 | 日韩黄色在线观看 | 国产精品 中文字幕 亚洲 欧美 | 亚洲五月六月 | 521色香蕉网站在线观看 | 亚洲综合精品在线 | 婷婷九九 | 国产精品久久久777 成人手机在线视频 | 国内精品视频久久 | 91av视频在线免费观看 | 亚洲 精品在线视频 | 日韩av在线一区二区 | 亚洲综合日韩在线 | 色视频在线看 | 91精品国产99久久久久久久 | 99九九视频 | www.天天干 | 99人成在线观看视频 | 午夜av免费看 | 日韩动漫免费观看高清完整版在线观看 | 久久久在线 | 日本三级不卡视频 | 天堂激情网 | 久久天天躁夜夜躁狠狠躁2022 | 麻豆精品视频在线 | 久九视频 | 国产乱对白刺激视频不卡 | 久久影视网 | 欧美日本不卡视频 | 国产丝袜一区二区三区 | 成人免费视频视频在线观看 免费 | 日韩免费网址 | 日韩一二三在线 | 九九在线视频 | 日韩免费观看av | 精品在线观看一区二区三区 | 99成人在线视频 | 欧美精品在线免费 | 91豆麻精品91久久久久久 | 懂色av一区二区在线播放 | 国产精品地址 | 天天操天天舔天天爽 | 91精品国产成人观看 | 国产做爰视频 | 91精品久久久久久久久久久久久 | 狠狠干狠狠色 | 日韩羞羞| 国产98色在线 | 日韩 | 国产不卡在线看 | 久久九九影院 | 国内精品久久久久影院优 | 久久视频国产 | 亚洲aⅴ一区二区三区 | 97色在线观看免费视频 | 91综合色| 免费a网站 | 久久久久久在线观看 | 精品国产乱码一区二 | 在线观看一级片 | 国产69精品久久99不卡的观看体验 | 国产精品久一 | 中国一级特黄毛片大片久久 | 免费国产亚洲视频 | 国产亚洲精品久久19p | 一区二区三区四区在线免费观看 | 色综合久久中文字幕综合网 | 精品国产一二三四区 | 国产日韩欧美在线观看 | 狂野欧美激情性xxxx | 免费亚洲片 | 久久亚洲影视 | 91chinesexxx| 91中文字幕在线视频 | 在线看小早川怜子av | 日韩精品在线观看av | 97香蕉超级碰碰久久免费软件 | 天天射天天干天天爽 | 日韩免费看 | 久久综合免费视频影院 | 免费国产黄线在线观看视频 | 久久综合免费视频影院 | 在线导航福利 | 四虎在线影视 | 欧美日韩亚洲国产一区 | av片在线看 | 在线视频 影院 | 午夜视频日本 | 国产精品热视频 | 久久亚洲专区 | 视频在线国产 | 九九热精品视频在线观看 | 婷婷色网视频在线播放 | 免费在线播放 | 成人影片免费 | 国产一二区视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 丁香 婷婷 激情 | 不卡电影免费在线播放一区 | 日本夜夜草视频网站 | 亚洲一区二区精品在线 | 成人毛片一区二区三区 | 日韩色一区二区三区 | 波多野结衣一区二区三区中文字幕 | 麻豆国产网站 | 久久久久久久久久福利 | 国产精品国产亚洲精品看不卡15 | 国产精品久久久久久久电影 | 日韩在线视频网站 | 973理论片235影院9 | 欧美日韩网站 | 中文字幕在线免费97 | 中文字幕在线免费看 | 午夜视频在线观看一区二区三区 | 一区二区欧美在线观看 | 亚洲午夜大片 | 久草精品视频 | 在线中文字幕一区二区 | 国产精品一区二区精品视频免费看 | 亚洲欧美日韩精品久久久 | 97超碰人人爱 | 一区二区国产精品 | 国产亚洲精品久久 | 亚洲aⅴ一区二区三区 | 91av福利视频| 欧美一区二区在线刺激视频 | 免费看的黄色的网站 | 国产日本在线播放 | 69国产盗摄一区二区三区五区 | 激情欧美国产 | 最近中文字幕大全中文字幕免费 | 亚洲国产日韩av | 国产午夜精品福利视频 | 一二三区高清 | 色婷婷一区 | 欧美在线观看小视频 | 国产韩国日本高清视频 | 麻豆视频免费版 | 国产一区高清在线观看 | 国产不卡毛片 | 国产剧在线观看片 | 93久久精品日日躁夜夜躁欧美 | 黄色亚洲| 国产三级av在线 | av片在线看| 亚洲aⅴ乱码精品成人区 | 国内揄拍国内精品 | 视频在线日韩 | 亚洲热视频| 久久精品a | 在线免费视 | 天天综合天天综合 | 97超碰在线久草超碰在线观看 | 黄色一二级片 | 欧美激情精品久久久久久免费印度 | 日韩国产精品毛片 | 久久综合成人 | 在线看片91 | 中文字幕中文字幕在线中文字幕三区 | 97精品国自产拍在线观看 | 97视频免费在线看 | 日韩精品久久久久久久电影99爱 | 亚洲网站在线看 | 麻豆91视频 | 日韩电影精品一区 | 东方av在线免费观看 | 成人作爱视频 | 91大神免费在线观看 | 91成人在线视频 | 黄色成人在线观看 | av片子在线观看 | 免费在线观看黄网站 | 国产成人av在线 | 欧美一区二区三区在线播放 | 久久久久久久久久久网站 | 日本在线视频一区二区三区 | 四虎国产精品永久在线国在线 | 国内久久久久 | 91久草视频 | 国产小视频你懂的在线 | 九九久久电影 | 国产69精品久久99的直播节目 | 免费在线观看日韩视频 | 中文字幕资源在线观看 | 欧美日韩不卡一区二区 | 久久成人18免费网站 | 日韩欧美电影在线 | 日本一区二区免费在线观看 | 日本韩国精品一区二区在线观看 | 一区二区三区四区不卡 | 成人在线电影观看 | 欧美一级大片在线观看 | 亚洲黄色激情小说 | 国产视频一区在线免费观看 | 黄色美女免费网站 | 天天操综合网站 | 在线观看午夜av | 国产精品久久影院 | 亚一亚二国产专区 | 五月天com| 91色国产在线 | 国产成人av福利 | 国产精品18久久久久久不卡孕妇 | 欧美日韩高清国产 | 人人干人人超 | 日韩高清免费在线 | 欧美日韩国产mv | 国产精品毛片久久蜜 | 日批视频在线观看免费 | 日本黄区免费视频观看 | 少妇搡bbbb搡bbb搡aa | 亚洲欧美va | 成人毛片久久 | 日韩av伦理片 | 久热久草在线 | 人人玩人人爽 | 亚洲一区日韩 | 久草在线视频免费资源观看 | 国产精品精品久久久久久 | 国产福利精品一区二区 | 在线观看一 | 午夜影视剧场 | 日本丰满少妇免费一区 | 日韩理论电影网 | www.色午夜.com | 六月丁香激情网 | 欧美在线视频一区二区 | 天天躁天天操 | 亚洲人久久久 | 色国产精品 | 成人精品影视 | 日韩高清精品免费观看 | 黄污在线观看 | 午夜少妇| 久9在线 | 园产精品久久久久久久7电影 | 国产精品美女免费看 | 亚洲精品视频在线观看网站 | 99re热精品视频 | 97香蕉久久超级碰碰高清版 | 激情久久伊人 | 日韩精品一区二区在线观看视频 | 在线观看蜜桃视频 | 成人久久国产 | 中文字幕乱码一区二区 | 丁香婷婷网 | 国产不卡毛片 | 欧美污污网站 | 在线播放第一页 | 国产成人一区二区啪在线观看 | 久久综合网色—综合色88 | 美女亚洲精品 | 天天操夜夜逼 | 中文字幕色在线 | 999视频在线播放 | 一本一道久久a久久精品蜜桃 | 91av在| 天天插天天干天天操 | 99久久婷婷国产精品综合 | 国产免费影院 | 日韩手机在线观看 | 日韩黄色在线电影 | 国产热re99久久6国产精品 | 免费性网站 | 午夜视频在线网站 | 99热精品久久 | 久久视频这里有精品 | 热精品 | 精品久久久久久亚洲综合网 | 精品久久久久久国产91 | 精品a视频| 亚洲精品一区二区三区新线路 | 久草久草在线 | 日韩特级毛片 | 国产精品99精品久久免费 | 欧美激情在线看 | 国产日韩欧美在线看 | 国产视 | 999色视频 | 1024手机基地在线观看 | 国产淫a| 五月天婷婷视频 | 成人免费观看在线视频 | 日韩欧美在线第一页 | 免费在线 | 九九免费在线观看视频 | 国内外激情视频 | 成人在线观看网址 | 精品三级av| 波多野结衣最新 | 亚洲综合在线五月天 | 免费电影一区二区三区 | 91在线视频精品 | 久久免费看 | 国产免费片 | 在线观看中文字幕网站 | 免费观看全黄做爰大片国产 | 狠狠地日| 日韩免费观看视频 | 国产91精品高清一区二区三区 | 91丨九色丨国产在线 | 欧美一二区视频 | 久久精品综合 | 国产综合婷婷 | 欧美日韩99 | 91精品在线免费 | 天天操天天干天天操天天干 | 亚洲精品久久久久58 | 日韩在线不卡视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 六月丁香久久 | 91成人免费电影 | 久久少妇| 久久综合九九 | 九九九九九九精品 | 99久久爱| 成年人在线免费看视频 | 精品无人国产偷自产在线 | 在线a亚洲视频播放在线观看 | 亚洲精品美女免费 | 国产精品入口66mio女同 | 久久精品一区 | 免费黄在线观看 | 国产特级毛片 | av免费播放 | 国产精品久久久久久久久久直播 | 久久毛片高清国产 | 成人av教育| av中文天堂在线 | 国产精品国产亚洲精品看不卡15 | 高清av在线 | 国产91在线观看 | 日韩在线中文字幕 | 久久综合色一综合色88 | 日韩av电影中文字幕在线观看 | 尤物97国产精品久久精品国产 | 国产综合91 | 成人av在线看 | 91在线看网站 | 探花视频在线观看免费版 | 五月天亚洲综合小说网 | 丰满少妇对白在线偷拍 | 91精品视频在线免费观看 | 亚洲激情中文 | 欧美日韩国产精品一区 | 欧美性护士| 免费在线观看日韩视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲精品在线电影 | 黄色官网在线观看 | 日韩最新理论电影 | 国产精品一区二区麻豆 | 国产精品久久久网站 | 又黄又爽的视频在线观看网站 | 成人片在线播放 | 日韩黄色免费 | 国产1级视频 | 99热在线免费观看 | 亚洲视屏 | 天天摸日日操 | 亚洲日本va午夜在线影院 | 天天弄天天操 | 久艹在线播放 | 久久影院亚洲 | 婷婷精品在线 | 久久久人人人 | 亚洲 欧美日韩 国产 中文 | 亚洲国产精品激情在线观看 | av黄色影院 | 日本巨乳在线 | 国产免费叼嘿网站免费 | 久久成人综合 | 久久婷婷亚洲 | 少妇视频在线播放 | 看国产黄色大片 | 午夜三级福利 | 中文字幕在线观看视频网站 | 五月婷在线 | 狠狠躁日日躁夜夜躁av | 丰满少妇在线观看资源站 | 超级碰碰视频 | 成人av网页| 久久精品高清视频 | 久久久久久高潮国产精品视 | 免费男女羞羞的视频网站中文字幕 | 亚洲精品国产精品乱码在线观看 | 视频在线精品 | 欧美伦理一区 | 国产成人精品999在线观看 | 美女免费网视频 | 狠狠干夜夜操天天爽 | 三级动图| 日日摸日日添夜夜爽97 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 99视频在线观看免费 | 久久97视频 | 午夜av免费观看 | 精品久久国产一区 | 黄色av网站在线观看免费 | 麻豆视频成人 | 天天拍天天爽 | 中文字幕在线免费97 | 日韩视频免费观看高清完整版在线 | 国产成人一区二区啪在线观看 | 国产日本在线观看 | 国产福利中文字幕 | 日韩三级成人 | 久久99热国产 | 亚洲精品国产精品久久99热 | 男女精品久久 | 国内精品久久久久影院优 | 国产一区二区在线视频观看 | 天天爱综合 | 黄网在线免费观看 | 日韩在线电影 | 在线免费观看麻豆 | 日韩aⅴ视频 | 国产精久久久久久妇女av | 欧美精品久久久久久久久免 | 成人久久18免费网站麻豆 | 日韩精品在线免费播放 | 98精品国产自产在线观看 | 最新久久免费视频 | 国产又粗又硬又爽的视频 | 91福利试看| 玖玖国产精品视频 | 91精品伦理 | 婷婷色亚洲 | 人人澡超碰碰97碰碰碰软件 | 久久免费视频观看 | 7799av| 91资源在线观看 | 中文字幕人成乱码在线观看 | 日韩一区二区三区高清免费看看 | 国产午夜在线观看 | 久久a级片 | 国产一区二区网址 | 黄色免费网站大全 | 蜜桃视频日韩 | 亚州天堂| 一区二区三区国产欧美 | 手机在线黄色网址 | 久久综合狠狠 | 91麻豆免费看 | 精品无人国产偷自产在线 | 免费在线观看视频一区 | 久久久久久久久久久网站 | 免费在线观看av的网站 | 国产成人精品亚洲精品 | 日本h在线播放 | 7777精品伊人久久久大香线蕉 | 久久综合久久综合这里只有精品 | 99精品国产一区二区三区不卡 | 国产又粗又硬又爽的视频 | 久久不见久久见免费影院 | 伊人婷婷 | av国产网站| 精品国产一区二区三区在线 | 国产成人在线播放 | 91精品久久香蕉国产线看观看 | av超碰在线 | 玖玖精品在线 | 特片网久久 | 丁香婷婷久久久综合精品国产 | 久久av在线| 亚洲精品一区二区三区高潮 | 99在线精品免费视频九九视 | 免费久草视频 | 久久国产精品视频观看 | 日本福利视频在线 | 2019中文字幕第一页 | 天天做天天爱天天综合网 | 精品久久久影院 | 九九综合九九综合 | 欧美日韩网站 | 在线观看视频一区二区 | 婷婷视频导航 | 欧美日韩高清不卡 | 国产一级三级 | 国产精品乱看 | 最近在线中文字幕 | 天堂在线一区二区三区 | 色网站在线免费观看 | 日本精品久久久一区二区三区 | 99r在线视频 | 51久久夜色精品国产麻豆 | 亚洲黄色成人 | avcom在线| 久草综合视频 | 久久久久久免费毛片精品 | 高清av免费观看 | 亚洲国产日韩欧美 | 日韩h在线观看 | www.日日操.com| 婷婷久月 | 日韩欧美在线综合网 | 日韩中文字幕免费 | 三级av在线免费观看 | 欧美久久久久久久久中文字幕 | 亚洲理论影院 | 久热超碰 | 亚洲精品五月天 | 欧美性生交大片免网 | 亚洲国产日韩av | 久久久久久久久久久久久国产精品 | 麻豆果冻剧传媒在线播放 | 日韩精品一区二区在线 | av怡红院 | 欧美一级片 | 成人免费视频播放 | 天天天操天天天干 | 在线免费观看视频a | 国产蜜臀av | 中文字幕二区在线观看 | 国产成人资源 | 国产黄av| 91av蜜桃| 欧美日韩xx | 高清免费在线视频 | 国产第一福利网 | 激情综合五月天 | 色婷婷视频在线观看 | 色综合婷婷久久 | 国产午夜麻豆影院在线观看 | 国产亚洲精品成人av久久ww | 日韩久久久久久久久久久久 | 蜜臀av麻豆| 色亚洲网 | 97视频在线免费观看 | 午夜av在线免费 | 成人免费视频播放 | 色综合久久久久综合 | 久久成人精品 | 国产一级片免费视频 | 中文字幕亚洲综合久久五月天色无吗'' | 99在线视频观看 | 丁香视频在线观看 | 免费观看日韩av | 麻豆视频入口 | 91大神精品视频在线观看 | 在线免费观看国产视频 | 啪啪免费试看 | 国产首页 | 成人av免费网站 | 国产精品区在线观看 | 久久国产精品免费看 | 精品麻豆入口免费 | 激情五月av | 欧美在线资源 | 国产乱对白刺激视频不卡 | 最近中文字幕在线中文高清版 | 在线观看中文 | 亚洲综合视频网 | 国产麻豆剧果冻传媒视频播放量 | 又黄又爽又无遮挡免费的网站 | 插插插色综合 | 国产精品久久久久婷婷 | av日韩中文 | 中文字幕免费看 | 91av视频在线播放 | 天天色天天综合 | 韩国av免费观看 | 中文在线a天堂 | 国产手机视频在线播放 | 亚洲乱码久久久 | 99在线观看视频网站 | 2021久久| 狠狠综合久久 | 在线观看视频免费大全 | 欧美日韩不卡一区 | 中文字幕区 | 国产福利小视频在线 | 午夜电影中文字幕 | av动图| 国产手机在线观看 | 在线天堂视频 | 天天天天天天天操 | 国产精品毛片一区二区在线 | 精品久久久久久久久久久久久 | 亚洲区另类春色综合小说校园片 | 免费特级黄色片 | 婷婷久久精品 | 午夜精品在线看 | 在线播放第一页 |