MST

星途 面试题库

面试题:Go语言复杂条件下的if判断优化

现有一个复杂的条件判断场景,需要判断一个用户是否满足特定的访问权限。条件如下:用户年龄大于18岁,且所在地区为“北京”、“上海”、“广州”其中之一,且用户账户余额大于100元,同时用户最近30天内登录次数大于5次。请用Go语言实现这个条件判断逻辑,要求代码简洁、高效,并考虑可能的优化点。请写出完整的Go代码,并对优化思路进行简要说明。
25.4万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func hasAccess(age int, region string, balance float64, loginCount int) bool {
    regions := map[string]bool{
        "北京": true,
        "上海": true,
        "广州": true,
    }
    return age > 18 && regions[region] && balance > 100 && loginCount > 5
}
func main() {
    // 示例数据
    age := 20
    region := "北京"
    balance := 150.0
    loginCount := 6

    if hasAccess(age, region, balance, loginCount) {
        fmt.Println("用户满足特定访问权限")
    } else {
        fmt.Println("用户不满足特定访问权限")
    }
}

优化思路说明

  1. 使用map判断地区:对于判断地区是否在指定列表中,使用map来存储地区信息,其查找时间复杂度为O(1),相比使用切片遍历判断(时间复杂度O(n))更加高效,特别是当地区列表很长时优势明显。
  2. 逻辑判断顺序:在hasAccess函数中,先判断最可能不满足条件的部分(例如年龄,因为年龄大于18岁相对其他条件更可能不满足),这样可以在早期就返回false,减少不必要的判断,提高整体效率。