golang struct
admin
2023-07-31 21:05:07
0

struct


1、定义一个struct

package main

import "fmt"

type Rectangle struct {        
	width float64
	height float64
}

func main(){
	var r Rectangle       //声明一个结构体  r,width height的值为“零”值。在这里为0.0,0.0
	r = Rectangle{width:20,height:10} //给长宽赋值,带名称时,顺序随意
	r = Rectangle{20,10}      //等价上部的赋值,不带变量名称时,值与声明的变量顺序一致。
	fmt.Println("the Rectangle width:",r.width) // 访问 r.{属性} 
}
//执行结果:
the Rectangle width: 20

2、给结构体定义方法

package main

import "fmt"

type Rectangle struct {
	width float64
	height float64
}

func (r *Rectangle) area() float64 { //定义一个area的函数,返回值类型为float64,函数的接收者为前面括号的(变量名 类型名)
	return r.width * r.height

}


func main(){
	var r Rectangle
	r = Rectangle{width:20,height:10}
	r = Rectangle{20,10}
	fmt.Println("the Rectangle width:",r.width)
	fmt.Println("the area of Rectangle: ",r.area())  //直接调用area函数
}
//执行结果:
the Rectangle width: 20
the area of Rectangle:  200   //计算结果为200

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

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

package main

import "fmt"

type Rectangle struct {
	width float64
	height float64
}

func (r *Rectangle) area() float64 {
	return r.width * r.height

}
func (r Rectangle) changeWidth(){   //把接收体的类型设置为值类型
	r.width = 30
}

func main(){
	var r Rectangle
	r = Rectangle{width:20,height:10}
	r = Rectangle{20,10}
	fmt.Println("the Rectangle width:",r.width)
	fmt.Println("the area of Rectangle: ",r.area())
	r.changeWidth()                 //改变了width
	fmt.Println("the Rectangle width:",r.width) //打印结果
}
//执行结果:
the Rectangle width: 20
the area of Rectangle:  200
the Rectangle width: 20               //结果显示并没有改变

我们将接收体设置为指针

package main

import "fmt"

type Rectangle struct {
	width float64
	height float64
}

func (r *Rectangle) area() float64 {
	return r.width * r.height

}
func (r *Rectangle) changeWidth(){  // 指针类型
	r.width = 30
}

func main(){
	var r Rectangle
	r = Rectangle{width:20,height:10}
	r = Rectangle{20,10}
	fmt.Println("the Rectangle width:",r.width)
	fmt.Println("the area of Rectangle: ",r.area())
	r.changeWidth()
	fmt.Println("the Rectangle width:",r.width)
}
//执行结果:
the Rectangle width: 20
the area of Rectangle:  200
the Rectangle width: 30                 //结果显示已经改变了width的值


相关内容

热门资讯

五角大楼内部调查泄露:美军空袭... 当地时间2月28日上午11点刚过,伊朗7岁男孩马坎·纳西里的妈妈阿西耶·拉希内贾德接到一通电话。打来...
广西一动物园多只动物下落不明,... 7月7日,广西贵港一村民在村内发现一只斑马。经当地动物园确认,这是园内走失的怀孕斑马。据悉,受台风强...
中国核潜艇发射战略导弹,韩外交... 当地时间7月7日,韩国媒体韩联社援引多方消息源报道称,中方周一向太平洋试射潜射战略导弹前,已通过韩国...
创维电视啪的一声突然黑屏 1、可能是电视机外部插头突然松动,电视电源突然断开,无法供电造成黑屏。2、可能是由于电源插入大功率电...
创维电视机的二维码怎么显示出来 可以打开创维电视遥控器,里面有个智能电视,看到logo后点进去就是二维码了;还有就是把电视机的主页打...
空调E5故障代码怎么回事 原因可能是空调开启了相应的低压工作保护,要确保正常的空调工作电压范围。原因也可能是空调室内机和室外机...
美的空调出现e5是什么故障怎么... 1、一般定速挂机显示E5表示:T1传感器故障——找专业的维修人员对t1传感器进行一个维修或者是更换。...
创维电视的二维码在哪里? 创维电视的二维码在哪里?1、首先打开电视的主页,调出界面,可以看到最左边进行扫码,下载安装电视派。2...
伊朗议长:霸凌与敲诈的时代已经... 伊朗伊斯兰议会议长卡利巴夫8日在社交媒体上发文,强烈谴责美国“严重违反”伊美谅解备忘录。卡利巴夫说,...
致癌油风暴延烧,台民意机构通过... 海峡导报综合报道 台湾“中联油脂”大豆油致癌物超标,民进党当局政策反复、一度盖牌引发民怨,台民意机构...