最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GO語(yǔ)言的控制語(yǔ)句詳解包括GO語(yǔ)言的指針語(yǔ)法

 更新時(shí)間:2022年12月19日 16:43:08   作者:astarblog  
這篇文章主要介紹了GO語(yǔ)言的控制語(yǔ)句詳解包括GO語(yǔ)言的指針語(yǔ)法,GO語(yǔ)言switch結(jié)構(gòu),GO語(yǔ)言for的4種結(jié)構(gòu)需要的朋友可以參考下

GO語(yǔ)言的控制語(yǔ)句

判斷結(jié)構(gòu):if-else

和大多數(shù)編程語(yǔ)言一樣,if-else的用法基本都一樣,直接來(lái)一個(gè)GO語(yǔ)言的例子

package main
import (
    "fmt"
)
func main(
    var str string = "A"
    if str=="A"{
        fmt.Println("匹配成功")
    }else{
        fmt.Println("匹配失敗")
    }
)

輸出為:匹配成功如果更改了str的值,那么輸出就是匹配失敗,這就是一個(gè)最簡(jiǎn)單的判斷語(yǔ)句,還有一些復(fù)雜的,在以后的程序中遇到了在說(shuō)(完整的if-else可能要講一大章)

switch 結(jié)構(gòu)

將某些特點(diǎn)的某個(gè)變量進(jìn)行匹配相對(duì)應(yīng)的值,省去if-else不的結(jié)構(gòu),以更清晰可讀的方式來(lái)展現(xiàn),一個(gè)完整的例子

package main
import(
    "fmt"
)
func main(
    var num int = 20
    switch num{
        case 10:
            fmt.Println("num = 10")
        case 20:
            fmt.Println("num = 20")
        case 30:
            fmt.Println("num = 30")
        default:
            fmt.Println("default = 0")
    }
)

輸出:

num = 20

補(bǔ)充說(shuō)明:

在GO語(yǔ)言中,不用使用break來(lái)進(jìn)行結(jié)束當(dāng)前執(zhí)行塊,程序會(huì)自動(dòng)匹配完全成后結(jié)束;
那么問(wèn)題來(lái)了,如果不想結(jié)束匹配呢?在GO語(yǔ)言中,使用fallthrough關(guān)鍵字來(lái)繼續(xù)匹配如:

    var num int = 20
    switch num{
        case 10:
            fmt.Println("num = 10")
        case 20:
            fmt.Println("num = 20")
            fallthrough
        case 30:
            fmt.Println("num = 30")
        default:
            fmt.Println("default = 0")
    }

程序會(huì)輸出:

num = 20
num = 30

思考:在什么時(shí)候用swithc,什么時(shí)候用if-else?可以自己寫一點(diǎn)小DEMO來(lái)測(cè)試下這兩種判斷語(yǔ)句結(jié)構(gòu)

循環(huán)控制結(jié)構(gòu) for

在GO語(yǔ)言中,循環(huán)只有for這一個(gè)關(guān)鍵字,實(shí)現(xiàn)多種循環(huán)結(jié)構(gòu),省去了其它語(yǔ)言的比如:while,do-while,foreach,所以for的功能更加靈活

1. for的第一種形式

和大多數(shù)其它語(yǔ)言一樣,基本形式是:

for 初始化語(yǔ)句; 條件語(yǔ)句; 修飾語(yǔ)句 {}

一個(gè)完整的例子

package main
import(
    "fmt"
)
func main(){
    var num int = 5
    for i:=0;i<num;i++{
        fmt.Printf("num index id %d \n", i)
    }
}

輸出為:

num index id 0 
num index id 1 
num index id 2 
num index id 3 
num index id 4 

補(bǔ)充:GO語(yǔ)言中的for循環(huán)是不用在判斷部分加上()來(lái)進(jìn)行包裹起來(lái)的
練習(xí)題:用GO的循環(huán)打印下面的格式

G
GG
GGG
GGGG
GGGGG

代碼:

package main
import(
    "fmt"
)
func main(){
    for i := 0; i < 5; i++ {
        G := ""
        for j := 0; j < i; j++ {
            G += "G"
        }
        fmt.Println(G + "G")
    }
}

2. for的第二種形式

這種格式在某種程度上面說(shuō):其實(shí)就是其它語(yǔ)言的do-while循環(huán),只不過(guò)GO將這種循環(huán)全部都用for來(lái)實(shí)現(xiàn)了

for 條件語(yǔ)句 {}

一個(gè)完整的例子:

package main
import(
    "fmt"
)
func main(){
    var num_2 int = 5
    for num_2 > 0 {
        fmt.Printf("num_is is %d \n", num_2)
        num_2--
    }
}

輸出為:

num_is is 5 
num_is is 4 
num_is is 3 
num_is is 2 
num_is is 1

3. for的第三種形式

這種形式,我一般叫它無(wú)限循環(huán),寫這種形式的時(shí)候,一定要注意使用break,return等關(guān)鍵字,因?yàn)橐徊恍⌒木蜁?huì)寫成死循環(huán)

for { } 或 for ;; { }或 for true { }

一個(gè)完整的例子

package main
import(
    "fmt"
)
func main(){
var num_3 int = 5
    for {
        if num_3 < 0 {
            break //把這一行給注釋看看
        }
        fmt.Printf("num_3 is %d \n", num_3)
        num_3--
    }
}

輸出為:

num_3 is 5 
num_3 is 4 
num_3 is 3 
num_3 is 2 
num_3 is 1 
num_3 is 0

4. for的四種形式

這種形式就類似于其它語(yǔ)言的foreach關(guān)鍵字,進(jìn)行多層循環(huán)

for ix, val := range coll { }

一個(gè)完整的例子

package main
import(
    "fmt"
)
func main(){
    strs := "Hello World!例子"
    for ins, char := range strs {
        fmt.Printf("str is index %d,value is %c \n", ins, char)
    }
}

輸出:

str is index 0,value is H 
str is index 1,value is e 
str is index 2,value is l 
str is index 3,value is l 
str is index 4,value is o 
str is index 5,value is   
str is index 6,value is W 
str is index 7,value is o 
str is index 8,value is r 
str is index 9,value is l 
str is index 10,value is d 
str is index 11,value is ! 
str is index 12,value is 例 
str is index 15,value is 子 

對(duì),你沒(méi)看錯(cuò),GO會(huì)自動(dòng)識(shí)別中文,常用的英文字母,數(shù)字為1個(gè)字節(jié),中文或其它字符占2-3個(gè)字節(jié)

控制語(yǔ)句常用關(guān)鍵字

break

結(jié)束當(dāng)前判斷或循環(huán),執(zhí)行下面的代碼

continue

結(jié)束當(dāng)次判斷或循環(huán),開(kāi)始下次的判斷或循環(huán)

return

返回當(dāng)前函數(shù),下面的代碼不在執(zhí)行

標(biāo)簽和goto的介紹,有空在介紹(其實(shí)是不太鼓勵(lì)大家用這個(gè),因?yàn)橐徊恍⌒模饔糜蚩村e(cuò)了,就會(huì)導(dǎo)致死循環(huán),一直在某個(gè)標(biāo)簽里面調(diào)用)

指針

  • 在GO語(yǔ)言中,提供了控制數(shù)據(jù)結(jié)構(gòu)的指針的能力,但是,你不能進(jìn)行指針運(yùn)算;
  • 在GO語(yǔ)言中,用*關(guān)鍵字來(lái)聲明某個(gè)變量為指針變量;(例:var p *int)
  • 在GO語(yǔ)言中,用&關(guān)鍵字來(lái)放到變量前,返回變量的內(nèi)存地址;(例:p = &變量)
  • 在GO語(yǔ)言中,格式化標(biāo)識(shí)符為%p(例:fmt.Printf("%P",p))
  • 一個(gè)完整的例子
package main
import(
    "fmt"
)
func main(
    s := "good bye"
    var p *string = &s
    *p = "ciao"
    fmt.Printf("指針地址: %p\n", p)
    fmt.Printf("指針P的值是: %s\n", *p)
    fmt.Printf("變量S的值是: %s\n", s)
)

輸出為

指針地址: 0x2540820(內(nèi)存值可能會(huì)變)
指針P的值是: ciao
變量S的值是: ciao

為什么變量S的值和指針P的值一樣呢?

答:因?yàn)镻是指針,是內(nèi)存地址,當(dāng)給指針P重新賦值后,P所對(duì)應(yīng)的內(nèi)存地址的值就變了,而變量S的值所在的內(nèi)存塊正好是指針P所對(duì)應(yīng)的內(nèi)存

本文主要講解了GO語(yǔ)言的控制語(yǔ)句,包括GO語(yǔ)言的指針語(yǔ)法,GO語(yǔ)言switch結(jié)構(gòu),GO語(yǔ)言for的4種結(jié)構(gòu),更多關(guān)于GO語(yǔ)言的控制語(yǔ)句語(yǔ)法請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • Go Java算法之累加數(shù)示例詳解

    Go Java算法之累加數(shù)示例詳解

    這篇文章主要為大家介紹了Go Java算法之累加數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 從Node.js 轉(zhuǎn)到 Go平臺(tái)

    從Node.js 轉(zhuǎn)到 Go平臺(tái)

    回顧過(guò)去的一年,我們?cè)诩夹g(shù)棧上的最大改變就是從 Node.js 切換到 Go 。我們的聯(lián)合創(chuàng)始人,Steve Kaliski, 在 Poptip 把 Node.js 切換成了 Go,可惜他沒(méi)有學(xué)習(xí)到當(dāng)時(shí)的教訓(xùn)。
    2015-03-03
  • Golang等多種語(yǔ)言轉(zhuǎn)數(shù)組成字符串舉例詳解

    Golang等多種語(yǔ)言轉(zhuǎn)數(shù)組成字符串舉例詳解

    今天寫代碼遇到數(shù)組轉(zhuǎn)換成字符串操作,下面這篇文章主要給大家介紹了關(guān)于Golang等多種語(yǔ)言轉(zhuǎn)數(shù)組成字符串的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Go高級(jí)特性探究之對(duì)象比較詳解

    Go高級(jí)特性探究之對(duì)象比較詳解

    在go語(yǔ)言中,要比較兩個(gè)對(duì)象是否完全相同,我們可以使用三種方法,這篇文章主要為大家介紹了這三種方法的具體實(shí)現(xiàn),需要的可以參考一下
    2023-06-06
  • GO語(yǔ)言中的方法值和方法表達(dá)式的使用方法詳解

    GO語(yǔ)言中的方法值和方法表達(dá)式的使用方法詳解

    這篇文章主要介紹了GO的方法值和方法表達(dá)式的使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • go連接kafka的實(shí)現(xiàn)示例

    go連接kafka的實(shí)現(xiàn)示例

    本文主要介紹了go連接kafka的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang驗(yàn)證器之validator是使用詳解

    Golang驗(yàn)證器之validator是使用詳解

    Validator是一個(gè)?Golang?的第三方庫(kù),用于對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),常用于?API?的開(kāi)發(fā)中,對(duì)客戶端發(fā)出的請(qǐng)求數(shù)據(jù)進(jìn)行嚴(yán)格校驗(yàn),防止惡意請(qǐng)求。本文通過(guò)示例詳細(xì)講解了Validator的使用,需要的可以參考一下
    2022-08-08
  • golang?中?recover()的使用方法

    golang?中?recover()的使用方法

    這篇文章主要介紹了Guam與golang??recover()的使用方法,Recover?是一個(gè)Go語(yǔ)言的內(nèi)建函數(shù),可以讓進(jìn)入宕機(jī)流程中的?goroutine?恢復(fù)過(guò)來(lái),下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • 詳解golang中發(fā)送http請(qǐng)求的幾種常見(jiàn)情況

    詳解golang中發(fā)送http請(qǐng)求的幾種常見(jiàn)情況

    這篇文章主要介紹了詳解golang中發(fā)送http請(qǐng)求的幾種常見(jiàn)情況,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • go mod 依賴管理的具體使用

    go mod 依賴管理的具體使用

    在Go語(yǔ)言開(kāi)發(fā)中,依賴管理是一項(xiàng)非常重要的工作,Go mod作為官方的包管理工具已經(jīng)成為了Go語(yǔ)言依賴管理的首選方式,本文就來(lái)介紹一下go mod 依賴管理的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

东丽区| 黄冈市| 高碑店市| 英超| 左云县| 铜梁县| 津市市| 永善县| 龙江县| 无为县| 泗洪县| 湘潭市| 山阴县| 公安县| 黔东| 绥宁县| 广平县| 微山县| 紫云| 鄄城县| 隆德县| 鱼台县| 伊宁市| 肥城市| 兖州市| 铜鼓县| 洛宁县| 商城县| 和龙市| 凤台县| 漳平市| 安远县| 句容市| 公主岭市| 沁源县| 乌拉特前旗| 茶陵县| 商南县| 罗城| 明溪县| 崇仁县|