Go-程序结构-类型声明

本文介绍了Go语言中使用type声明创建类型别名,并展示了如何进行类型之间的转换。通过示例代码,解释了Celsius和Fahrenheit温度类型的定义及相互转换,强调了类型别名在防止误用和提高代码可读性方面的作用。同时,文章还讨论了类型比较和自定义的String方法在输出格式化方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 类型声明
    可以使用type声明定义一个新的命名类型,命名类型提供了一种方式来区别底层类型的不同或者不兼容使用,这样他们就不会在无意中混用
    type name underlying-type
package main

import "fmt"

type Celsius float64
type Fahrenheit float64

const (
	AbsoluteZeroC Celsius = -273.15
	FreezingC     Celsius = 0
	BoilingC      Celsius = 100
)

func CToF(c Celsius) Fahrenheit {
	return Fahrenheit(c*9/5 + 32)
}

func FToC(f Fahrenheit) Celsius {
	return Celsius((f - 32) * 5 / 9)
}
func (c Celsius) StringMethodSelf() string{
	return fmt.Sprintf("%g˚C",c)
}

func main() {
	fmt.Printf("%g\n", BoilingC-FreezingC) // 100
	boilingf := CToF(BoilingC)
	fmt.Printf("%g\n", boilingf-CToF(FreezingC)) // 180

	var c Celsius
	var f Fahrenheit
	//通过 ==  > 之类的比较操作符,可以比较相同类型的值,或 底层类型相同未命名类型的值相比较
	println(c == 0) //true
	println(f >= 0) //true
	//println(c==f)//因为不是同一个类型,所以编译失败
	println(c == Celsius(f)) //true

	b :=FToC(212.0)
	fmt.Println(b.StringMethodSelf()) //100˚C

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值