日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

GO語言的控制語句詳解包括GO語言的指針語法_Golang

作者:astarblog ? 更新時間: 2023-01-19 編程語言

GO語言的控制語句

判斷結構:if-else

和大多數編程語言一樣,if-else的用法基本都一樣,直接來一個GO語言的例子

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

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

switch 結構

將某些特點的某個變量進行匹配相對應的值,省去if-else不的結構,以更清晰可讀的方式來展現,一個完整的例子

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

補充說明:

在GO語言中,不用使用break來進行結束當前執行塊,程序會自動匹配完全成后結束;
那么問題來了,如果不想結束匹配呢?在GO語言中,使用fallthrough關鍵字來繼續匹配如:

    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")
    }

程序會輸出:

num = 20
num = 30

思考:在什么時候用swithc,什么時候用if-else?可以自己寫一點小DEMO來測試下這兩種判斷語句結構

循環控制結構 for

在GO語言中,循環只有for這一個關鍵字,實現多種循環結構,省去了其它語言的比如:while,do-while,foreach,所以for的功能更加靈活

1. for的第一種形式

和大多數其它語言一樣,基本形式是:

for 初始化語句; 條件語句; 修飾語句 {}

一個完整的例子

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 

補充:GO語言中的for循環是不用在判斷部分加上()來進行包裹起來的
練習題:用GO的循環打印下面的格式

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的第二種形式

這種格式在某種程度上面說:其實就是其它語言的do-while循環,只不過GO將這種循環全部都用for來實現了

for 條件語句 {}

一個完整的例子:

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的第三種形式

這種形式,我一般叫它無限循環,寫這種形式的時候,一定要注意使用break,return等關鍵字,因為一不小心就會寫成死循環

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

一個完整的例子

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的四種形式

這種形式就類似于其它語言的foreach關鍵字,進行多層循環

for ix, val := range coll { }

一個完整的例子

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 子 

對,你沒看錯,GO會自動識別中文,常用的英文字母,數字為1個字節,中文或其它字符占2-3個字節

控制語句常用關鍵字

break

結束當前判斷或循環,執行下面的代碼

continue

結束當次判斷或循環,開始下次的判斷或循環

return

返回當前函數,下面的代碼不在執行

標簽和goto的介紹,有空在介紹(其實是不太鼓勵大家用這個,因為一不小心,作用域看錯了,就會導致死循環,一直在某個標簽里面調用)

指針

  • 在GO語言中,提供了控制數據結構的指針的能力,但是,你不能進行指針運算;
  • 在GO語言中,用*關鍵字來聲明某個變量為指針變量;(例:var p *int)
  • 在GO語言中,用&關鍵字來放到變量前,返回變量的內存地址;(例:p = &變量)
  • 在GO語言中,格式化標識符為%p(例:fmt.Printf("%P",p))
  • 一個完整的例子
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(內存值可能會變)
指針P的值是: ciao
變量S的值是: ciao

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

答:因為P是指針,是內存地址,當給指針P重新賦值后,P所對應的內存地址的值就變了,而變量S的值所在的內存塊正好是指針P所對應的內存

原文鏈接:https://www.jianshu.com/p/57d5a83221a1

欄目分類
最近更新