【GO】结构体构造函数练习题

基础构造函数

题目描述

定义结构体 Student,包含字段:

  • 姓名 name string
  • 年龄 age int
  • 成绩 score float64

实现构造函数 NewStudent(name string, age int, score float64) *Student,

要求:

  • 年龄必须 ≥ 0,否则默认设为 0
  • 成绩必须在 0~100 之间,否则默认设为 0
  • 返回结构体指针

在 main 中创建对象并打印信息。

输出示例

&{name:小明 age:18 score:90}

实现代码

Go 复制代码
package main

import "fmt"

type Student struct {
	name  string
	age   int
	score float64
}

func NewStudent(name string, age int, score float64) *Student {
	if age < 0 {
		age = 0
	}
	if score < 0 || score > 100 {
		score = 0
	}
	return &Student{
		name:  name,
		age:   age,
		score: score,
	}
}

func main() {
	stu := NewStudent("小明", 18, 90)
	fmt.Printf("%+v\n", stu)
}

带默认值的构造函数

题目描述

定义结构体 Car:

  • 品牌 brand
  • 颜色 color
  • 最高时速 maxSpeed

实现两个构造:

  1. NewCar(brand, color string, maxSpeed int) *Car
  2. NewDefaultCar() *Car:默认品牌为 "大众",颜色 "白色",时速 120

创建默认车对象并打印。

输出示例

&{brand:大众 color:白色 maxSpeed:120}

实现代码

Go 复制代码
package main

import "fmt"

type Car struct {
	brand    string
	color    string
	maxSpeed int
}

func NewCar(brand, color string, maxSpeed int) *Car {
	return &Car{brand, color, maxSpeed}
}

func NewDefaultCar() *Car {
	return NewCar("大众", "白色", 120)
}

func main() {
	car := NewDefaultCar()
	fmt.Printf("%+v\n", car)
}
相关推荐
microrain8 小时前
读数是 1008,用电量是 8:SagooIoT 计算服务的增量口径与七种计算策略
物联网·golang·计算服务·sagooiot
看浪的路人10 小时前
第7讲:大模型后端服务化——Go 实现高并发 LLM Proxy / Router / Fallback
开发语言·后端·golang
灯澜忆梦12 小时前
【Go Zap 日志库】#1 |快速上手 + 配置详解
开发语言·后端·golang
不是万能的豆学长15 小时前
排查Go服务40天后的内存泄漏问题
开发语言·后端·golang·go
tachibana215 小时前
Go 语言 Map 的底层实现原理
开发语言·后端·golang·make
tachibana216 小时前
Go语言里slice是怎么扩容的?
后端·golang·go·切片
西瓜很甜哟17 小时前
golang实现大文件分片上传
后端·golang·html
tachibana21 天前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
王中阳Go1 天前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
for_ever_love__2 天前
LangChain Agentic RAG:让 Agent 自己决定要不要检索、检索几次
人工智能·golang·langchain·rag·langgraph·agentic·自适应检索