MST

星途 面试题库

面试题:Go中如何对自定义类型进行赋值边界控制

在Go语言中,假设有一个自定义类型 `type Score int` 表示学生成绩,成绩范围应该在0到100之间。请编写一个函数,用于给 `Score` 类型变量赋值,并进行边界控制,如果超出范围则返回错误。
44.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "errors"
    "fmt"
)

type Score int

var ErrOutOfRange = errors.New("score out of range")

func SetScore(s *Score, value int) error {
    if value < 0 || value > 100 {
        return ErrOutOfRange
    }
    *s = Score(value)
    return nil
}

你可以这样调用这个函数:

func main() {
    var s Score
    err := SetScore(&s, 85)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("Score set to: %d\n", s)
    }

    err = SetScore(&s, 105)
    if err != nil {
        fmt.Println(err)
    }
}