golang struct
struct
1、定义一个struct
packagemainimport"fmt"typeRectanglestruct{widthfloat64heightfloat64}funcmain(){varrRectangle//声明一个结构体r,widthheight的值为“零”值。在这里为0.0,0.0r=Rectangle{width:20,height:10}//给长宽赋值,带名称时,顺序随意r=Rectangle{20,10}//等价上部的赋值,不带变量名称时,值与声明的变量顺序一致。fmt.Println("theRectanglewidth:",r.width)//访问r.{属性}}//执行结果:theRectanglewidth:20
2、给结构体定义方法
packagemainimport"fmt"typeRectanglestruct{widthfloat64heightfloat64}func(r*Rectangle)area()float64{//定义一个area的函数,返回值类型为float64,函数的接收者为前面括号的(变量名类型名)returnr.width*r.height}funcmain(){varrRectangler=Rectangle{width:20,height:10}r=Rectangle{20,10}fmt.Println("theRectanglewidth:",r.width)fmt.Println("theareaofRectangle:",r.area())//直接调用area函数}//执行结果:theRectanglewidth:20theareaofRectangle:200//计算结果为200
3、结构体方法接收类型为指针,则能改变原结构体的属性值
我们先将类型设置为值类型看看
packagemainimport"fmt"typeRectanglestruct{widthfloat64heightfloat64}func(r*Rectangle)area()float64{returnr.width*r.height}func(rRectangle)changeWidth(){//把接收体的类型设置为值类型r.width=30}funcmain(){varrRectangler=Rectangle{width:20,height:10}r=Rectangle{20,10}fmt.Println("theRectanglewidth:",r.width)fmt.Println("theareaofRectangle:",r.area())r.changeWidth()//改变了widthfmt.Println("theRectanglewidth:",r.width)//打印结果}//执行结果:theRectanglewidth:20theareaofRectangle:200theRectanglewidth:20//结果显示并没有改变
我们将接收体设置为指针
packagemainimport"fmt"typeRectanglestruct{widthfloat64heightfloat64}func(r*Rectangle)area()float64{returnr.width*r.height}func(r*Rectangle)changeWidth(){//指针类型r.width=30}funcmain(){varrRectangler=Rectangle{width:20,height:10}r=Rectangle{20,10}fmt.Println("theRectanglewidth:",r.width)fmt.Println("theareaofRectangle:",r.area())r.changeWidth()fmt.Println("theRectanglewidth:",r.width)}//执行结果:theRectanglewidth:20theareaofRectangle:200theRectanglewidth:30//结果显示已经改变了width的值
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。