Go: 结构体与方法

在go语言中,用结构体绑定一个方法,会让代码块更容易理解。

举一个简单的例子。

案例:编写一个程序,从终端输入年份,可以快速计算出今年是属于天干地支的哪一年。

首先决定天干地支的算法为:公元年数先减3,除10余数是天干。基数改用12除,余数便是地支年。天干从1~10,分别为:甲 乙 丙 丁 戊 己 庚 辛 壬 癸;地支从1~12,分别为:子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥。

package main

import (
	"fmt"
)
//定义一个天干的结构体
type TianGan struct {
	TianGanName [10]string
}
//定义一个地支的结构体
type DiZhi struct {
	DiZhiName [12]string

}
//作用与天干的方法
func (tg TianGan) CalTianGan(year int) string {
	var tstr string
	tYear := (year - 3) % 10
	for i := 1; i <= len(tg.TianGanName); i ++ {
		if tYear == i {
			tstr = tg.TianGanName[i-1]
			break 
		}  else if tYear == 0 {
			tstr = tg.TianGanName[len(tg.TianGanName)-1]
			break
		}
	}
	return tstr
}
//作用与地支的方法
func (dz DiZhi) CalDizhi(year int) string {
	var dstr string
	dYear := (year - 3) % 12
	for j := 1; j <= len(dz.DiZhiName); j ++ {
		if dYear == j {
			dstr = dz.DiZhiName[j-1]
			break 
		} else if dYear == 0 {
			dstr = dz.DiZhiName[len(dz.DiZhiName)-1]
			break
		}
	}
	return dstr
}

func main() {
	var (
		year int
		tg TianGan
		dz DiZhi
	)
    //先赋值
	tg.TianGanName = [10]string{"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}
	dz.DiZhiName = [12]string{"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}

	fmt.Println("请输入公历年份...")
	fmt.Scanln(&year)
	
    fmt.Printf("输入的年份为%s年\n",tg.CalTianGan(year)+dz.CalDizhi(year))
}

输出的结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值