类型定义和类型别名

题目:

下面这段代码能否通过编译?如果通过,输出什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "fmt"

type MyInt1 int
type MyInt2 = int

func main() {
var i int =0
var i1 MyInt1 = i
var i2 MyInt2 = i
fmt.Println(i1,i2)
}

答案解析

​ 不能通过编译。

type MyInt1 int是创建了新类型MyInt1

type MyInt2 = int是创建了int的类型别名MyInt2

var i1 MyInt1 = i 代码中相当于将int类型的变量赋值给MyInt类型的变量,Go是强类型语言,编译肯定不通过,

​ 而var i2 MyInt2 = i中的MyInt2只是int的别名,其本质还是int,所以可以赋值。


类型定义和类型别名
http://example.com/2023/05/23/Go每日一题/类型定义和类型别名/
作者
Feng Tao
发布于
2023年5月23日
更新于
2023年5月23日
许可协议