溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言的指針怎么用

發布時間:2022-04-22 09:18:52 來源:億速云 閱讀:222 作者:iii 欄目:開發技術

本篇內容介紹了“Go語言的指針怎么用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    一、定義結構體

    1. 語法格式

    結構體定義需要使用 type 和 struct 語句

    struct 語句定義一個新的數據類型,結構體中有一個或多個成員

    type 語句設定了結構體的名稱

    結構體的格式如下

    type struct_variable_type struct {
        member definition
        member definition
        ...
        member definition
     } 

    一旦定義了結構體類型,它就能用于變量的聲明,語法格式如下

    variable_name := structure_variable_type {value1, value2...valuen}

    或者

    variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}  

    2. 示例

    package main
     
    import "fmt"
     
    type Persion struct {
        name    string
        sex     string
        age     int
        id_card int
    }
     
    func main() {
        //創建一個新的結構體
        fmt.Println(Persion{"zhangsan", "男", 20, 123412424})
        //使用key:value格式
        fmt.Println(Persion{name: "lisi", sex: "女", age: 18, id_card: 133654623})
        //忽略的字段為0或空
        fmt.Println(Persion{name: "wangwu", id_card: 21352365})
    }

    輸出結果

    {zhangsan 男 20 123412424}
    {lisi 女 18 133654623}
    {wangwu  0 21352365}  

    二、訪問結構體成員

    如果要訪問結構體成員,需要使用點號.操作符,格式為:

    結構體.成員名"  

    結構體類型變量使用 struct 關鍵字定義,實例如下:

    package main
     
    import "fmt"
     
    func main() {
        //結構體聲明
        type Persion struct {
            name string
            age  int
            sex  string
            id   int
        }
        //結構體類型的變量
        var (
            Persion1 Persion //聲明 Persion1 為 Persion 類型
            Persion2 Persion //聲明 Persion2 為 Persion 類型
        )
     
        //給prison1賦值
        Persion1.name = "lisi"
        Persion1.sex = "man"
        Persion1.age = 30
        Persion1.id = 56341153
     
        //給prison2賦值
        Persion2.name = "wangwu"
        Persion2.sex = "woman"
        Persion2.age = 18
        Persion2.id = 78238232
     
        fmt.Println(Persion1)
        fmt.Println(Persion2)
    }

    輸出結果如下

    {lisi 30 man 56341153}
    {wangwu 18 woman 78238232} 

    三、結構體作為函數參數

    結構體也可以作為參數傳遞給函數,可以解決一些代碼的冗余問題,簡化代碼

    示例

    package main
     
    import "fmt"
     
    //結構體聲明
    type Persion struct {
        name string
        age  int
        sex  string
        id   int
    }
     
    func main() {
     
        //結構體類型的變量
        var (
            Persion1 Persion //聲明 Persion1 為 Persion 類型
            Persion2 Persion //聲明 Persion2 為 Persion 類型
        )
     
        //給prison1賦值
        Persion1.name = "lisi"
        Persion1.sex = "man"
        Persion1.age = 30
        Persion1.id = 56341153
     
        //給prison2賦值
        Persion2.name = "wangwu"
        Persion2.sex = "woman"
        Persion2.age = 18
        Persion2.id = 78238232
     
        //使用函數傳遞結構體
        printInfo(Persion1)
        fmt.Println("------------------")
        printInfo(Persion2)
    }
     
    //函數定義結構體為形式參數,進行傳入
    func printInfo(p Persion) {
        fmt.Println("姓名: ", p.name)
        fmt.Println("年齡: ", p.age)
        fmt.Println("性別: ", p.sex)
        fmt.Println("身份證: ", p.id)
    }

    輸出結果如下

    姓名:  lisi
    年齡:  30
    性別:  man
    身份證:  56341153
    ------------------
    姓名:  wangwu
    年齡:  18
    性別:  woman
    身份證:  78238232

    四、結構體指針

    可以定義指向結構體的指針類似于其他指針變量,格式如下

    var struct_pointer *Persion

    以上定的指針變量可以存儲結構體變量的地址,查看結構體變量的地址,可以將&符合放置于結構體變量前

    struct_pointer = &Persion1

    使用結構體指針訪問結構體成員,可以使用.操作符

    struct_pointer.title  
    package main
     
    import "fmt"
     
    //結構體聲明
    type Persion struct {
        name string
        age  int
        sex  string
        id   int
    }
     
    func main() {
     
        //結構體類型的變量
        var (
            Persion1 Persion //聲明 Persion1 為 Persion 類型
            Persion2 Persion //聲明 Persion2 為 Persion 類型
        )
     
        //給prison1賦值
        Persion1.name = "lisi"
        Persion1.sex = "man"
        Persion1.age = 30
        Persion1.id = 56341153
     
        //給prison2賦值
        Persion2.name = "wangwu"
        Persion2.sex = "woman"
        Persion2.age = 18
        Persion2.id = 78238232
     
        //使用函數傳遞結構體的地址
        printInfo(&Persion1)
        fmt.Println("------------------")
        printInfo(&Persion2)
    }
     
    //定義結構體指針形參進行傳入
    func printInfo(p *Persion) {
        fmt.Println("姓名: ", p.name)
        fmt.Println("年齡: ", p.age)
        fmt.Println("性別: ", p.sex)
        fmt.Println("身份證: ", p.id)
    }

    輸出結果如下

    姓名:  lisi
    年齡:  30
    性別:  man
    身份證:  56341153
    ------------------
    姓名:  wangwu
    年齡:  18
    性別:  woman
    身份證:  78238232

    “Go語言的指針怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女