struct
1、定义一个struct
packagemain import"fmt" typeRectanglestruct{ widthfloat64 heightfloat64 } funcmain(){ varrRectangle//声明一个结构体r,widthheight的值为“零”值。在这里为0.0,0.0 r=Rectangle{width:20,height:10}//给长宽赋值,带名称时,顺序随意 r=Rectangle{20,10}//等价上部的赋值,不带变量名称时,值与声明的变量顺序一致。 fmt.Println("theRectanglewidth:",r.width)//访问r.{属性} } //执行结果: theRectanglewidth:20
2、给结构体定义方法
packagemain import"fmt" typeRectanglestruct{ widthfloat64 heightfloat64 } func(r*Rectangle)area()float64{//定义一个area的函数,返回值类型为float64,函数的接收者为前面括号的(变量名类型名) returnr.width*r.height } funcmain(){ varrRectangle r=Rectangle{width:20,height:10} r=Rectangle{20,10} fmt.Println("theRectanglewidth:",r.width) fmt.Println("theareaofRectangle:",r.area())//直接调用area函数 } //执行结果: theRectanglewidth:20 theareaofRectangle:200//计算结果为200
我们先将类型设置为值类型看看
packagemain import"fmt" typeRectanglestruct{ widthfloat64 heightfloat64 } func(r*Rectangle)area()float64{ returnr.width*r.height } func(rRectangle)changeWidth(){//把接收体的类型设置为值类型 r.width=30 } funcmain(){ varrRectangle r=Rectangle{width:20,r.area()) r.changeWidth()//改变了width fmt.Println("theRectanglewidth:",r.width)//打印结果 } //执行结果: theRectanglewidth:20 theareaofRectangle:200 theRectanglewidth:20//结果显示并没有改变
我们将接收体设置为指针
packagemain import"fmt" typeRectanglestruct{ widthfloat64 heightfloat64 } func(r*Rectangle)area()float64{ returnr.width*r.height } func(r*Rectangle)changeWidth(){//指针类型 r.width=30 } funcmain(){ varrRectangle r=Rectangle{width:20,r.area()) r.changeWidth() fmt.Println("theRectanglewidth:",r.width) } //执行结果: theRectanglewidth:20 theareaofRectangle:200 theRectanglewidth:30//结果显示已经改变了width的值原文链接:https://www.f2er.com/go/188854.html