golang struct

前端之家收集整理的这篇文章主要介绍了golang struct前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

3、结构体方法接收类型为指针,则能改变原结构体的属性

我们先将类型设置为值类型看看

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

猜你在找的Go相关文章