You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用new关键字一行创建带值的InvalidIPError实例并返回?

解决方案

这很简单,你只需要把检测到的无效IP对应的raw值直接嵌入到new的结构体初始化语句中,就能一行完成错误实例创建与返回。修改后的Valid()方法代码如下:

// Valid checks Config data
func (c *Config) Valid() Error {
    // Check mapping.hosts
    for _, raw := range c.Mapping.Hosts {
        if validIP := utils.ValidIP4(raw.IPAddress); !validIP {
            // 一行完成InvalidIPError实例创建并返回
            return new(InvalidIPError{HostRaw: raw})
        }
    }
    return nil
}

// Error represents errors in config
type Error interface {
    Error() string
}

// InvalidIPError raises when invalid ip provided
type InvalidIPError struct {
    HostRaw HostRaw
}

func (e *InvalidIPError) Error() string {
    return fmt.Sprintf("You specified invalid IP: %v", e.HostRaw)
}

说明

  • new(InvalidIPError{HostRaw: raw}) 会同时完成两件事:为InvalidIPError结构体分配内存、用给定的raw值初始化结构体的HostRaw字段;
  • 直接返回这个新建的错误实例,就能让调用方拿到包含具体无效IP信息的错误提示,和你给出的参考写法完全匹配。

内容的提问来源于stack exchange,提问作者user3169724

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:27:15