MST

星途 面试题库

面试题:Go中类型相同性判断的基础边界情况

在Go语言中,考虑以下两种类型定义:type MyInt int 和 type YourInt int。请说明 MyInt 和 YourInt 是否属于相同类型,并解释原因。另外,如果有函数 func Add(a, b int) int,能否直接传入 MyInt 类型的变量作为参数,为什么?
12.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. MyInt 和 YourInt 是否属于相同类型
    • MyInt 和 YourInt 不属于相同类型。虽然它们底层类型都是 int,但 Go 语言中通过 type 关键字定义的新类型,即使底层类型相同,它们也是不同的类型。这是因为 Go 语言的类型系统对这种自定义类型进行了区分,以提供更严格的类型安全。
  2. 能否直接传入 MyInt 类型的变量作为 Add 函数参数
    • 不能直接传入 MyInt 类型的变量作为 Add 函数的参数。因为 Add 函数期望的参数类型是 int,而 MyInt 是与 int 不同的类型。要使用 MyInt 类型的变量调用 Add 函数,需要先将 MyInt 类型的值显式转换为 int 类型。例如:
package main

import "fmt"

type MyInt int

func Add(a, b int) int {
    return a + b
}

func main() {
    var myA MyInt = 5
    result := Add(int(myA), 3)
    fmt.Println(result)
}