温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言的指针怎么用

发布时间:2022-04-22 09:18:52 来源:亿速云 阅读:154 作者: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