国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Go編程語(yǔ)言】流程控制

這篇具有很好參考價(jià)值的文章主要介紹了【Go編程語(yǔ)言】流程控制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

流程控制



【Go編程語(yǔ)言】流程控制


程序的流程控制結(jié)構(gòu)一具有三種:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)

【Go編程語(yǔ)言】流程控制

  • 順序結(jié)構(gòu):從上到下,逐行執(zhí)行。默認(rèn)的邏輯

  • 選擇結(jié)構(gòu):條件滿(mǎn)足某些代碼才會(huì)執(zhí)行

    • if

    • switch

    • select ,后面 channel 再講

  • 循環(huán)結(jié)構(gòu):條件滿(mǎn)足某些代碼會(huì)被反復(fù)執(zhí)行0-N次

    • for

一、if 語(yǔ)句

條件語(yǔ)句需要開(kāi)發(fā)者通過(guò)指定一個(gè)或多個(gè)條件,并通過(guò)測(cè)試條件是否為 true 來(lái)決定是否執(zhí)行指定語(yǔ)句,并在條件為false的情況在執(zhí)行另外的語(yǔ)句。

下圖展示了程序語(yǔ)言中條件語(yǔ)句的結(jié)構(gòu):
【Go編程語(yǔ)言】流程控制

package main

import "fmt"

func main() {
	// 分?jǐn)?shù)
	var score int = 66

	if score >= 90 && score <= 100 {
		fmt.Println("優(yōu)秀")
	} else if score >= 80 && score < 90 {
		fmt.Println("良好")
	} else if score >= 60 && score < 80 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

}

輸出
【Go編程語(yǔ)言】流程控制

1.if 嵌套語(yǔ)句

if 布爾表社式 1 {
	/* 在布爾表達(dá)式 1 為 true 3:執(zhí)行 */
	if 布爾表達(dá)式 2 {
		/* 在布爾表達(dá)式 2 true 時(shí)執(zhí)行 */
	}
}
package main

import "fmt"

func main() {
	var one, two int
	// 初始密碼
	var pwd int = 12345678
	// 接收用戶(hù)輸入密碼
	fmt.Print("請(qǐng)輸入密碼:")
	fmt.Scan(&one)

	// 功能:驗(yàn)證密碼是否正確
	if one == pwd {
		fmt.Print("請(qǐng)?jiān)俅屋斎朊艽a:")
		fmt.Scan(&two)
		if two == pwd {
			fmt.Println("登錄成功")
		} else {
			fmt.Println("第二次輸入密碼錯(cuò)誤,登錄失敗,請(qǐng)重新輸入密碼……")
		}
	} else {
		fmt.Println("輸入密碼錯(cuò)誤,登錄失敗,請(qǐng)重新輸入密碼……")
	}

}

輸出
【Go編程語(yǔ)言】流程控制

二、switch 語(yǔ)句

switch語(yǔ)句用于基于不同條件執(zhí)行不同動(dòng)作,每一個(gè)case分支都是唯一的,從上至下逐一測(cè)試,直到匹配為止。

switch var1 { 
	case test1:
		...
	case test2:
		...		
	defauIt:
		...
}

switch語(yǔ)句執(zhí)行的過(guò)程從上至下,直到找到匹配項(xiàng),匹配項(xiàng)后面也不需要再加 break.。switch默認(rèn)情況下 case 最后自帶 break 語(yǔ)句

package main

import "fmt"

func main() {
	var score string = "D"
	
	// 匹配
	switch score {
	case "A":
		fmt.Println("等級(jí)為A,成績(jī)?cè)?0~100范圍內(nèi)")
	case "B":
		fmt.Println("等級(jí)為B,成績(jī)?cè)?0~90范圍內(nèi)")
	case "C":
		fmt.Println("等級(jí)為C,成績(jī)?cè)?0~79范圍內(nèi)")
	default:
		fmt.Println("等級(jí)為D,成績(jī)?cè)?~59范圍內(nèi)")

	}
	// switch 默認(rèn)條件 bool = true
	switch {
	case false:
		fmt.Println("false")
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

輸出
【Go編程語(yǔ)言】流程控制

fallthrough 貫穿,直通

switch默認(rèn)情況下匹配成功后就不會(huì)執(zhí)行其他case,如果我們需要執(zhí)行后面的case,可以使用 fallthrough 穿透case使用 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,fallthrough不會(huì)判斷下條case的表達(dá)結(jié)果是否為true.

package main

import "fmt"

func main() {

	a := false
	// switch 默認(rèn)條件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一個(gè)條件是否滿(mǎn)足,都會(huì)執(zhí)行
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

輸出
【Go編程語(yǔ)言】流程控制

package main

import "fmt"

func main() {

	a := false
	// switch 默認(rèn)條件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一個(gè)條件是否滿(mǎn)足,都會(huì)執(zhí)行
	case true:
		if a == false {
			break // 終止 case 穿透
		}
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

輸出
【Go編程語(yǔ)言】流程控制

三、for 循環(huán)

在不少實(shí)際問(wèn)題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語(yǔ)句。for 循環(huán)是一個(gè)循環(huán)控制結(jié)構(gòu),可以執(zhí)行指定次數(shù)的循環(huán)。

package main

import "fmt"

func main() {
	// for 條件的起始值;循環(huán)條件;控制變量自增或自減
	// for ;循環(huán)條件;
	// for {} 無(wú)限循環(huán)
	i := 1
	for {
		fmt.Println(i)
		i++
	}
	sum := 0
	// for 給控制變量賦值初值,循環(huán)條件給控制變量增量或減量\

	// 計(jì)算 1 到 10 的數(shù)字之和
	for i := 1; i <= 10; i++ {
		// 循環(huán)體
		sum += i

	}
	fmt.Println(sum)
}

栗子:輸出一個(gè)10*10的方陣

package main

import "fmt"

func main() {
	// i 控制行, j 控制列 
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			fmt.Print("* ")
		}
		fmt.Println()
	}

}

輸出
【Go編程語(yǔ)言】流程控制
栗子:九九乘法表

package main

import "fmt"

func main() {
	// i 控制行, j 控制列
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d \t", j, i, j*i)
		}
		fmt.Println()
	}

}

輸出
【Go編程語(yǔ)言】流程控制

break 結(jié)束當(dāng)前整個(gè)循環(huán)

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			break
		}
		fmt.Println(i)
	}


}

continue 結(jié)束本次循環(huán)

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			continue
		}
		fmt.Println(i)
	}


}

輸出
【Go編程語(yǔ)言】流程控制

四、string

什么是String

Go中的字符串是一個(gè)字節(jié)的切片,可以通過(guò)將其內(nèi)容封裝在""中來(lái)創(chuàng)建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 編碼。字符串是一些字節(jié)的集合。

package main

import "fmt"

func main() {

	str := "hello,guan"
	fmt.Println(str)

	// 獲取字符串的長(zhǎng)度 len
	fmt.Println("字符串長(zhǎng)度為:", len(str))

	// 獲取指定的字節(jié)
	fmt.Println("字節(jié)打?。?, str[4])
	fmt.Printf("%c", str[4])
	fmt.Println()

	for i := 0; i < len(str); i++ {
		fmt.Printf("%c\n", str[i])
	}

	// for range 循環(huán),遍歷數(shù)組、切片....
	// 返回下標(biāo)和對(duì)應(yīng)的值,使用這個(gè)值就行了
	for i, v := range str {
		fmt.Print(i)
		fmt.Print("--")
		fmt.Printf("%c", v)
		fmt.Println()
	}

}

【Go編程語(yǔ)言】流程控制文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461864.html

到了這里,關(guān)于【Go編程語(yǔ)言】流程控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go語(yǔ)言網(wǎng)絡(luò)編程(socket編程)WebSocket編程

    WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議 WebSocket使得客戶(hù)端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶(hù)端推送數(shù)據(jù) 在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸 需要安裝第

    2024年02月09日
    瀏覽(93)
  • Go語(yǔ)言網(wǎng)絡(luò)編程(socket編程)http編程

    Web服務(wù)器的工作原理可以簡(jiǎn)單地歸納為 客戶(hù)機(jī)通過(guò)TCP/IP協(xié)議建立到服務(wù)器的TCP連接 客戶(hù)端向服務(wù)器發(fā)送HTTP協(xié)議請(qǐng)求包,請(qǐng)求服務(wù)器里的資源文檔 服務(wù)器向客戶(hù)機(jī)發(fā)送HTTP協(xié)議應(yīng)答包,如果請(qǐng)求的資源包含有動(dòng)態(tài)語(yǔ)言的內(nèi)容,那么服務(wù)器會(huì)調(diào)用動(dòng)態(tài)語(yǔ)言的解釋引擎負(fù)責(zé)處理“

    2024年02月09日
    瀏覽(95)
  • 【30天熟悉Go語(yǔ)言】7 Go流程控制之分支結(jié)構(gòu)if、switch

    【30天熟悉Go語(yǔ)言】7 Go流程控制之分支結(jié)構(gòu)if、switch

    Go系列文章: GO開(kāi)篇:手握J(rèn)ava走進(jìn)Golang的世界 2 Go開(kāi)發(fā)環(huán)境搭建、Hello World程序運(yùn)行 3 Go編程規(guī)約和API包 4 Go的變量、常量、運(yùn)算符 5 Go 基本數(shù)據(jù)類(lèi)型 6 Go 復(fù)雜數(shù)據(jù)類(lèi)型之指針 Go專(zhuān)欄傳送鏈接:https://blog.csdn.net/saintmm/category_12326997.html if 語(yǔ)句由布爾表達(dá)式后緊跟一個(gè)或多個(gè)語(yǔ)句組

    2024年02月09日
    瀏覽(22)
  • GO語(yǔ)言網(wǎng)絡(luò)編程(并發(fā)編程)Channel

    GO語(yǔ)言網(wǎng)絡(luò)編程(并發(fā)編程)Channel

    1.1.1 Channel 單純地將函數(shù)并發(fā)執(zhí)行是沒(méi)有意義的。函數(shù)與函數(shù)間需要交換數(shù)據(jù)才能體現(xiàn)并發(fā)執(zhí)行函數(shù)的意義。 雖然可以使用共享內(nèi)存進(jìn)行數(shù)據(jù)交換,但是共享內(nèi)存在不同的goroutine中容易發(fā)生競(jìng)態(tài)問(wèn)題。為了保證數(shù)據(jù)交換的正確性,必須使用互斥量對(duì)內(nèi)存進(jìn)行加鎖,這種做法勢(shì)

    2024年02月09日
    瀏覽(105)
  • GO語(yǔ)言網(wǎng)絡(luò)編程(并發(fā)編程)select

    1.1.1 select多路復(fù)用 在某些場(chǎng)景下我們需要同時(shí)從多個(gè)通道接收數(shù)據(jù)。通道在接收數(shù)據(jù)時(shí),如果沒(méi)有數(shù)據(jù)可以接收將會(huì)發(fā)生阻塞。你也許會(huì)寫(xiě)出如下代碼使用遍歷的方式來(lái)實(shí)現(xiàn): 這種方式雖然可以實(shí)現(xiàn)從多個(gè)通道接收值的需求,但是運(yùn)行性能會(huì)差很多。為了應(yīng)對(duì)這種場(chǎng)景,G

    2024年02月09日
    瀏覽(239)
  • GO語(yǔ)言網(wǎng)絡(luò)編程(并發(fā)編程)runtime包

    1.1.1. runtime.Gosched() 讓出CPU時(shí)間片,重新等待安排任務(wù)(大概意思就是本來(lái)計(jì)劃的好好的周末出去燒烤,但是你媽讓你去相親,兩種情況第一就是你相親速度非???,見(jiàn)面就黃不耽誤你繼續(xù)燒烤,第二種情況就是你相親速度特別慢,見(jiàn)面就是你儂我儂的,耽誤了燒烤,但是還饞就

    2024年02月09日
    瀏覽(122)
  • Go語(yǔ)言網(wǎng)絡(luò)編程(socket編程)TCP

    TCP協(xié)議 TCP/IP(Transmission Control Protocol/Internet Protocol) 即傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的傳輸層(Transport layer)通信協(xié)議,因?yàn)槭敲嫦蜻B接的協(xié)議,數(shù)據(jù)像水流一樣傳輸,會(huì)存在黏包問(wèn)題。 TCP服務(wù)端 一個(gè)TCP服務(wù)端可以同時(shí)連接很

    2024年02月09日
    瀏覽(97)
  • 掌握Go語(yǔ)言:Go語(yǔ)言通道,并發(fā)編程的利器與應(yīng)用實(shí)例(20)

    通道(Channel)是用來(lái)在 Go 程序中傳遞數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)。它是一種類(lèi)型安全的、并發(fā)安全的、阻塞式的數(shù)據(jù)傳輸方式,用于在不同的 Go 協(xié)程之間傳遞消息。 基本概念 創(chuàng)建通道 :使用 make() 函數(shù)創(chuàng)建一個(gè)通道。 發(fā)送數(shù)據(jù) :使用 - 操作符向通道發(fā)送數(shù)據(jù)。 接收數(shù)據(jù) :使用

    2024年03月21日
    瀏覽(33)
  • Go語(yǔ)言和Java編程語(yǔ)言的主要區(qū)別

    目錄 1.設(shè)計(jì)理念: 2.語(yǔ)法: 3.性能: 4.并發(fā)性: 5.內(nèi)存管理: 6.標(biāo)準(zhǔn)庫(kù): 7.社區(qū)和支持: 8.應(yīng)用領(lǐng)域: ????????Go(也稱(chēng)為Golang)和Java是兩種不同的編程語(yǔ)言,它們?cè)谠O(shè)計(jì)理念、語(yǔ)法、性能、并發(fā)性等方面存在許多區(qū)別。以下是它們之間的一些主要區(qū)別: ????????Go語(yǔ)

    2024年04月17日
    瀏覽(94)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包