• go 语言struct


    struct的作用:

      struct 其实就是用来自定义复杂的数据结构,来表示基本数据类型不能表示的数据类型。比如一个学生的各种属性(年龄、性别,姓名等)

    struct的定义 :

      type 标识符   struct{

       filed1 type       //filed1是字段,type标识字段的类型,可以多个字段,字段名不可重复

       filed2 type

       ...       ...

    }

    例:

    type student struct{
    	name string
    	age int
    	score int
    }
    

      通过上述定义,就自定义了一个名为student的数据类型,如何 使用呢?其实就相当于使用基本数据类型。

    func teststruct(){
    	var stu1 student  //定义一个名为stu1 类型为student的变量
    	stu1.age = 100   //访问student数据类型中的字段的方法是stu1.age,这行就是给变量赋值
    	stu1.name = "wang"
    	stu1.score = 120
    	fmt.Printf("%#v
    ",stu1) //打印输出结果
    }
    //输出结果是:
    //main.student{name:"wang", age:100, score:120}
    

      上面定义了一个普通变量,下面我来看怎么定义一个指针变量以及指针变量的使用。func teststructpoint(){

    	var stu *student   //定义指针变量
    	stu = new(student)  //给指针变量赋值,指针变量的值必须是地址。new(type)就是给stu分配类型为student的内存地址。或者这样定义也可以,先定义一个普通变量,把普通变量的地址赋值给stu.例:var stu1 student    stu = &stu1
    	(*stu).name = "lilili"
    	stu.age = 100     //stu.age 相当于 (*stu).age,这个是go的语法糖
    	stu.score = 200
    	fmt.Printf("%#v
    ",stu)
    }
    //输出结果
    //&main.student{name:"lilili", age:100, score:200}

      上面我们知道了struct的作用及定义方法,以及自定义类型以后的使用。那我们来总结一下,使用student类型时如何定义 

    • var stu Student //定义变量
    • var stu *Student = new (Student)  //定义指针变量并初始化
    • var stu *Student = &Student{} //定义指针变量并初始化

    访问方式如下:

    stu.age  或者

    (*stu).age

      

  • 相关阅读:
    【codevs1922】骑士共存问题——网络流
    【bzoj1855||hdu3401】股票交易——单调队列优化dp
    【bzoj2002】弹飞绵羊——分块
    【bzoj3790】神奇项链——manacher+贪心
    【hdu2149】Public Sale
    【hdu1846】Brave Game
    【hdu3294】Girls' research——manacher
    【hdu3068】最长回文——manacher算法
    [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
    [BZOJ] 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
  • 原文地址:https://www.cnblogs.com/wanghaijun999/p/8134936.html
Copyright © 2020-2023  润新知