欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言學(xué)習(xí)之指針的用法詳解

 更新時(shí)間:2022年04月21日 16:47:14   作者:隱姓埋名4869  
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中指針的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下

引言

Go 語(yǔ)言中數(shù)組可以存儲(chǔ)同一類型的數(shù)據(jù),但在結(jié)構(gòu)體中我們可以為不同項(xiàng)定義不同的數(shù)據(jù)類型

結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合

結(jié)構(gòu)體表示一項(xiàng)記錄,比如保存圖書館的書籍記錄,每本書有以下屬性:

Title :標(biāo)題

Author : 作者

Subject:學(xué)科

ID:書籍ID

一、定義結(jié)構(gòu)體

1. 語(yǔ)法格式

結(jié)構(gòu)體定義需要使用 type 和 struct 語(yǔ)句

struct 語(yǔ)句定義一個(gè)新的數(shù)據(jù)類型,結(jié)構(gòu)體中有一個(gè)或多個(gè)成員

type 語(yǔ)句設(shè)定了結(jié)構(gòu)體的名稱

結(jié)構(gòu)體的格式如下

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

一旦定義了結(jié)構(gòu)體類型,它就能用于變量的聲明,語(yǔ)法格式如下

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() {
    //創(chuàng)建一個(gè)新的結(jié)構(gòu)體
    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})
}

輸出結(jié)果

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

二、訪問(wèn)結(jié)構(gòu)體成員

如果要訪問(wèn)結(jié)構(gòu)體成員,需要使用點(diǎn)號(hào).操作符,格式為:

結(jié)構(gòu)體.成員名"  

結(jié)構(gòu)體類型變量使用 struct 關(guān)鍵字定義,實(shí)例如下:

package main
 
import "fmt"
 
func main() {
    //結(jié)構(gòu)體聲明
    type Persion struct {
        name string
        age  int
        sex  string
        id   int
    }
    //結(jié)構(gòu)體類型的變量
    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)
}

輸出結(jié)果如下

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

三、結(jié)構(gòu)體作為函數(shù)參數(shù)

結(jié)構(gòu)體也可以作為參數(shù)傳遞給函數(shù),可以解決一些代碼的冗余問(wèn)題,簡(jiǎn)化代碼

示例

package main
 
import "fmt"
 
//結(jié)構(gòu)體聲明
type Persion struct {
    name string
    age  int
    sex  string
    id   int
}
 
func main() {
 
    //結(jié)構(gòu)體類型的變量
    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
 
    //使用函數(shù)傳遞結(jié)構(gòu)體
    printInfo(Persion1)
    fmt.Println("------------------")
    printInfo(Persion2)
}
 
//函數(shù)定義結(jié)構(gòu)體為形式參數(shù),進(jìn)行傳入
func printInfo(p Persion) {
    fmt.Println("姓名: ", p.name)
    fmt.Println("年齡: ", p.age)
    fmt.Println("性別: ", p.sex)
    fmt.Println("身份證: ", p.id)
}

輸出結(jié)果如下

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

四、結(jié)構(gòu)體指針

可以定義指向結(jié)構(gòu)體的指針類似于其他指針變量,格式如下

var struct_pointer *Persion

以上定的指針變量可以存儲(chǔ)結(jié)構(gòu)體變量的地址,查看結(jié)構(gòu)體變量的地址,可以將&符合放置于結(jié)構(gòu)體變量前

struct_pointer = &Persion1

使用結(jié)構(gòu)體指針訪問(wèn)結(jié)構(gòu)體成員,可以使用.操作符

struct_pointer.title  
package main
 
import "fmt"
 
//結(jié)構(gòu)體聲明
type Persion struct {
    name string
    age  int
    sex  string
    id   int
}
 
func main() {
 
    //結(jié)構(gòu)體類型的變量
    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
 
    //使用函數(shù)傳遞結(jié)構(gòu)體的地址
    printInfo(&Persion1)
    fmt.Println("------------------")
    printInfo(&Persion2)
}
 
//定義結(jié)構(gòu)體指針形參進(jìn)行傳入
func printInfo(p *Persion) {
    fmt.Println("姓名: ", p.name)
    fmt.Println("年齡: ", p.age)
    fmt.Println("性別: ", p.sex)
    fmt.Println("身份證: ", p.id)
}

輸出結(jié)果如下

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

總結(jié)

結(jié)構(gòu)體是由相同類型和不同類型組成的數(shù)據(jù)集合,存儲(chǔ)的結(jié)構(gòu)類型是不受限制的

以上就是Go語(yǔ)言學(xué)習(xí)之指針的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言指針的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Go語(yǔ)言搭建WebSocket服務(wù)端方法示例

    利用Go語(yǔ)言搭建WebSocket服務(wù)端方法示例

    這篇文章主要給大家介紹了利用Go語(yǔ)言搭建WebSocket服務(wù)端方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • go使用errors.Wrapf()代替log.Error()方法示例

    go使用errors.Wrapf()代替log.Error()方法示例

    這篇文章主要為大家介紹了go使用errors.Wrapf()代替log.Error()的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 5個(gè)可以在Golang中優(yōu)化代碼以提高性能的技巧分享

    5個(gè)可以在Golang中優(yōu)化代碼以提高性能的技巧分享

    作為一名軟件工程師,確保你的代碼高效且性能良好是非常重要的。本文主要和大家分享5個(gè)可以在Golang中優(yōu)化代碼以提高性能的技巧,希望對(duì)大家有所幫助
    2023-03-03
  • Golang?中實(shí)現(xiàn)?Set的思路詳解

    Golang?中實(shí)現(xiàn)?Set的思路詳解

    本文介紹了Go中兩種set的實(shí)現(xiàn)原理,并在此基礎(chǔ)介紹了對(duì)應(yīng)于它們的兩個(gè)包簡(jiǎn)單使用,本文介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • Web框架Gin中間件實(shí)現(xiàn)原理步驟解析

    Web框架Gin中間件實(shí)現(xiàn)原理步驟解析

    這篇文章主要為大家介紹了Web框架Gin中間件實(shí)現(xiàn)原理步驟解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • logrus日志自定義格式操作

    logrus日志自定義格式操作

    這篇文章主要介紹了logrus日志自定義格式操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Go語(yǔ)言如何高效的進(jìn)行字符串拼接(6種方式對(duì)比分析)

    Go語(yǔ)言如何高效的進(jìn)行字符串拼接(6種方式對(duì)比分析)

    本文主要介紹了Go語(yǔ)言如何高效的進(jìn)行字符串拼接(6種方式對(duì)比分析),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 一文初探Go語(yǔ)言中的reflect反射包

    一文初探Go語(yǔ)言中的reflect反射包

    這篇文章主要和大家分享一下Go語(yǔ)言中的reflect反射包,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • Golang中for循環(huán)的用法示例詳解

    Golang中for循環(huán)的用法示例詳解

    for循環(huán)就是讓一段代碼循環(huán)的執(zhí)行,接下來(lái)通過(guò)本文給大家講解Golang中for循環(huán)的用法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • golang中json操作的完全指南

    golang中json操作的完全指南

    golang標(biāo)準(zhǔn)庫(kù)有一個(gè)名叫encoding/json的包,包含了JSON的序列化(Marshal)和反序列化(Unmarshal)的能力,下面這篇文章主要給大家介紹了關(guān)于golang中json操作的相關(guān)資料,需要的朋友可以參考下
    2022-07-07

最新評(píng)論