在C++中可以使用std::optional来实现和Go中一样的可选类型。std::optional是C++17中引入的一个类模板,用于表示一个值可能存在也可能不存在的情况。它可以包含任何类型的值,包括基本类型、自定义类型、指针等。如果值存在,可以通过解引用std::optional对象来访问它;如果值不存在,解引用std::optional对象将会抛出一个std::bad_optional_access异常。

下面是一个使用std::optional的示例:

#include <iostream>
#include <optional>

std::optional<int> divide(int a, int b) {
    if (b == 0) {
        return std::nullopt;
    } else {
        return a / b;
    }
}

int main() {
    auto result = divide(10, 2);
    if (result) {
        std::cout << "Result: " << *result << std::endl;
    } else {
        std::cout << "Division by zero" << std::endl;
    }
    return 0;
}

在上面的示例中,函数divide返回一个std::optional类型的值,表示除法的结果。如果除数为0,返回一个空的std::optional对象;否则返回包含结果的std::optional对象。在main函数中,使用if语句来判断结果是否存在,如果存在,通过解引用std::optional对象来访问结果

C++中如何实现和Go中一样的可选类型?

原文地址: http://www.cveoy.top/t/topic/chV0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录