文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go语言的指针怎么用

2023-06-30 07:52

关注

本篇内容介绍了“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语言的指针怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯