zoukankan      html  css  js  c++  java
  • 31_结构体的使用

    1.结构体是将零个或多个任意类型的命名变量组合在一起的聚合数据类型,每个变量都叫做结构体成员
    2.结构体何以作为函数参数传递,其是复制一个结构体将它传给一个函数,是值传递

    代码如下:

    package
    main
    
    
    import"fmt"
    
    
    //定义一个结构体,存储学生信息
    //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
    typeStudentstruct{
    //和变量定义不同,不要写var关键字
    Id int
    Name string
    Sex byte
    Age int
    Addr string
    }
    
    
    //值传递
    funcPrintName(sStudent){
    s.Name="test"
    fmt.Println(s.Name)//test
    }
    
    
    //引用传递
    funcPrintId(s*Student){
    s.Id=666
    fmt.Println(s.Id)
    }
    funcmain(){
    
    
    //1.结构体中可以通过(.)操作符来对成员变量进行赋值
    vars1Student
    s1.Name="steven"
    fmt.Println(s1.Name)
    //2.顺序初始化,必须每个成员都要初始化
    s2:=Student{1,"alice",'m',23,"sy"}
    fmt.Println(s2)
    //3.部分初始化
    s3:=Student{Id:2,Name:"zhangsan"}//没有初始化的默认为0
    fmt.Println(s3)
    
    
    //4.指针变量的定义
    vars4*Student=&Student{3,"lisi",'w',22,"js"}
    s5:=&Student{Id:4,Name:"wangwu"}
    
    
    //s4.成员*s4.成员是等价的,(.)操作符比*操作符级别高,所以(*)要加括号
    fmt.Printf("*s4.Addr=%d",(*s4).Id)
    
    
    //两者效果是一样的
    fmt.Println(s4,s5)//&{3lisi11922js}&{4wangwu00}
    fmt.Println(*s4,*s5)//{3lisi11922js}{4wangwu00}
    
    
    //5.先分配空间在赋值,这种定义的是指针类型
    s6:=new(Student)
    s6.Id=6
    s6.Name="xiaoqi"
    fmt.Println(*s6)//{6xiaoqi00}
    
    
    //7.结构体变量只能进行==和!=比较
    fmt.Println(s1==s2)//false
    
    
    //8.结构体做函数参数,是值传递
    PrintName(s3)
    fmt.Println(s3.Name)//zhangsan
    
    
    //9.引用传递
    PrintId(&s2)
    fmt.Println(s2.Id)
    
    
    //相同结构体之间可以赋值
    vars7Student=s2
    fmt.Println("S7=",s7)
    }
    
    
    packagemain
    
    
    import"fmt"
    
    
    //定义一个结构体,存储学生信息
    //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
    typeStudentstruct{
    //和变量定义不同,不要写var关键字
    Idint
    Namestring
    Sexbyte
    Ageint
    Addrstring
    }
    
    
    //值传递
    funcPrintName(sStudent){
    s.Name="test"
    fmt.Println(s.Name)//test
    }
    
    
    //引用传递
    funcPrintId(s*Student){
    s.Id=666
    fmt.Println(s.Id)
    }
    funcmain(){
    
    
    //1.结构体中可以通过(.)操作符来对成员变量进行赋值
    vars1Student
    s1.Name="steven"
    fmt.Println(s1.Name)
    //2.顺序初始化,必须每个成员都要初始化
    s2:=Student{1,"alice",'m',23,"sy"}
    fmt.Println(s2)
    //3.部分初始化
    s3:=Student{Id:2,Name:"zhangsan"}//没有初始化的默认为0
    fmt.Println(s3)
    
    
    //4.指针变量的定义
    vars4*Student=&Student{3,"lisi",'w',22,"js"}
    s5:=&Student{Id:4,Name:"wangwu"}
    
    
    //s4.成员*s4.成员是等价的,(.)操作符比*操作符级别高,所以(*)要加括号
    fmt.Printf("*s4.Addr=%d",(*s4).Id)
    
    
    //两者效果是一样的
    fmt.Println(s4,s5)//&{3lisi11922js}&{4wangwu00}
    fmt.Println(*s4,*s5)//{3lisi11922js}{4wangwu00}
    
    
    //5.先分配空间在赋值,这种定义的是指针类型
    s6:=new(Student)
    s6.Id=6
    s6.Name="xiaoqi"
    fmt.Println(*s6)//{6xiaoqi00}
    
    
    //7.结构体变量只能进行==和!=比较
    fmt.Println(s1==s2)//false
    
    
    //8.结构体做函数参数,是值传递
    PrintName(s3)
    fmt.Println(s3.Name)//zhangsan
    
    
    //9.引用传递
    PrintId(&s2)
    fmt.Println(s2.Id)
    
    
    //相同结构体之间可以赋值
    vars7Student=s2
    fmt.Println("S7=",s7)
    }
    
    
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    VSS使用
    Delphi简单数据库连接程序
    为表增加字段与拷贝数据到另一个表
    VSTS 使用
    Delphi实现个相似的功能界面共用一个窗体
    看代码笔记
    数据库安全管理
    函数
    【USACO】Ordered Fractions 顺序的分数
    C# 专业数据库连接配置界面
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11487321.html
Copyright © 2011-2022 走看看