【GO】为任意类型添加方法练习题

状态类型

题目描述

基于 bool 定义新类型 Status

Status 实现方法:String() string

规则:

  • 值为true返回 "启用"
  • 值为false返回 "禁用"

在 main 函数中测试并打印

输出示例

状态1: 启用

状态2: 禁用

实现代码

Go 复制代码
package main

import "fmt"

// 自定义状态类型
type Status bool

// 为 Status 实现 String() 方法(状态说明)
func (s Status) String() string {
	if s {
		return "启用"
	}
	return "禁用"
}

func main() {
	// 定义启用、禁用两种状态
	on := Status(true)
	off := Status(false)

	// 调用方法输出状态
	fmt.Println("状态1:", on.String())
	fmt.Println("状态2:", off.String())
}

计数器类型

题目描述

基于 int 定义新类型 Counter

Counter 实现三个方法:

  • Increment():计数器 自增 1
  • Decrement():计数器 自减 1
  • GetValue() int:获取当前计数器的值

在 main 函数中测试功能

输出示例

自增2次后: 2

自减1次后: 1

实现代码

Go 复制代码
package main

import "fmt"

// 自定义计数器类型
type Counter int

// 自增方法(指针接收者:修改自身值)
func (c *Counter) Increment() {
	*c++
}

// 自减方法(指针接收者:修改自身值)
func (c *Counter) Decrement() {
	*c--
}

// 获取当前值(值接收者:只读)
func (c Counter) GetValue() int {
	return int(c)
}

func main() {
	// 初始化计数器
	var count Counter = 0

	// 自增 2 次
	count.Increment()
	count.Increment()
	fmt.Println("自增2次后:", count.GetValue()) // 2

	// 自减 1 次
	count.Decrement()
	fmt.Println("自减1次后:", count.GetValue()) // 1
}
相关推荐
北冥you鱼1 天前
Go语言四则运算实战:从基础类型到big包的深度解析
开发语言·后端·golang
Wang's Blog2 天前
Go-Zero 项目开发47:自研微服务框架的必要性与核心结构设计
开发语言·微服务·golang
名字还没想好☜2 天前
Go 用 bufio.Scanner 读大文件踩坑:默认 64KB 行上限、Buffer 扩容与按 Token 切分
开发语言·后端·golang·go
techdashen2 天前
Go设计取舍之六: sync.Mutex正常模式与饥饿模式
开发语言·后端·golang
北冥you鱼2 天前
Go语言数组越界处理机制详解:从编译时检查到运行时panic
java·python·golang
FfHUCisI2 天前
Golang - 贪心算法 — 局部最优推导全局最优
贪心算法·golang·代理模式
立心者03 天前
Golang基础笔记十五之sync
开发语言·笔记·golang
xcLeigh3 天前
Go入门:变量声明的五种方式详解
java·开发语言·golang
techdashen3 天前
Go设计取舍之三: 0.3ns每次的错误Benchmark
开发语言·后端·golang
techdashen3 天前
Go设计取舍之四: map不变时能否并发修改不同value
开发语言·后端·golang