Go每日一题(24) 的题目如下

4424 次点击 · 6 赞 ·大约8小时之前 开始浏览   · 来源「Golang来啦」

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

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)
}
4424 阅读
47 回复
dingweihua
dingweihua · #1 · 3年之前
  1. type MyInt1 int是定义了一个新的类型,Go是强类型语言,所以var i1 MyInt1 = i是不允许的,意思是并不允许将int类型的值赋给MyInt1类型的变量。
  2. type MyInt2 = int是给int类型起了一个别名叫MyInt2,既然是别名,那就可以相互赋值。
Natsuwau
Natsuwau · #2 · 3年之前

学到了

Rob1n
Rob1n · #3 · 3年之前

mark type MyInt2 = int表示别名,可以相互赋值

henry1
henry1 · #4 · 3年之前

打开

feiyang
feiyang · #5 · 3年之前

打卡

a406299736
a406299736 · #6 · 3年之前

注意类型别名的定义时 =

lwcbest
lwcbest · #7 · 3年之前

type MyInt1 int type MyInt2 = int

MyInt1是新类型,var i1 MyInt1 = i 是错误的,int不能给MyInt1,新类型的赋值要用强类型转化MyInt1(i)

MyInt2是别名,可以赋值int

euibieur894
euibieur894 · #8 · 3年之前

打卡

Zuos
Zuos · #9 · 3年之前

mark

zyicy
zyicy · #10 · 3年之前

学到了

32729842
32729842 · #11 · 3年之前

打卡

_Aiden_
_Aiden_ · #12 · 3年之前

打卡

TimLiuDream
TimLiuDream · #13 · 3年之前

编译不通过 MyInt1 是新类型 MyInt2 类型别名

NovaChaos
NovaChaos · #14 · 3年之前

mk

feiyang
feiyang · #15 · 3年之前

第 10 行代码的赋值可以使用强制类型转化 var i1 MyInt1 = MyInt1(i)。

neil_liu
neil_liu · #16 · 3年之前

打卡

Dessert
Dessert · #17 · 3年之前

第 5 行代码是基于类型 int 创建了新类型 MyInt1,第 6 行代码是创建了 int 的类型别名 MyInt2,注意类型别名的定义时 =

haha_cat
haha_cat · #18 · 3年之前

具名类型

lwcbest
lwcbest · #19 · 3年之前

type MyInt1 int是定义了一个新的类型,Go是强类型语言,所以var i1 MyInt1 = i是不允许的,意思是并不允许将int类型的值赋给MyInt1类型的变量。 type MyInt2 = int是给int类型起了一个别名叫MyInt2,既然是别名,那就可以相互赋值。

mingtop
mingtop · #20 · 3年之前

类型别名与类型定义的区别

spartacus
spartacus · #21 · 3年之前

mark

a406299736
a406299736 · #22 · 3年之前

mark。。。

NovaChaos
NovaChaos · #23 · 2年之前

mk

feiyang
feiyang · #24 · 2年之前
feiyangfeiyang #15 回复

第 10 行代码的赋值可以使用强制类型转化 var i1 MyInt1 = MyInt1(i)。

第 5 行代码是基于类型 int 创建了新类型 MyInt1,第 6 行代码是创建了 int 的类型别名 MyInt2,注意类型别名的定义时 = 。所以,第 10 行代码相当于是将 int 类型的变量赋值给 MyInt1 类型的变量,Go 是强类型语言,编译当然不通过;而 MyInt2 只是 int 的别名,本质上还是 int,可以赋值。

a406299736
a406299736 · #25 · 2年之前

mark

brothersam
brothersam · #26 · 2年之前

不能编译,类型别名 和 新的类型

mingtop
mingtop · #27 · 2年之前

第 5 行代码是基于类型 int 创建了新类型 MyInt1,第 6 行代码是创建了 int 的类型别名 MyInt2,注意类型别名的定义时 = 。

Dessert
Dessert · #28 · 2年之前
dingweihuadingweihua #1 回复

1. type MyInt1 int是定义了一个新的类型,Go是强类型语言,所以var i1 MyInt1 = i是不允许的,意思是并不允许将int类型的值赋给MyInt1类型的变量。 2. type MyInt2 = int是给int类型起了一个别名叫MyInt2,既然是别名,那就可以相互赋值。

mark,= 别名,直接Int为定义新类型

hasbug
hasbug · #29 · 2年之前

mark

zyq-git
zyq-git · #30 · 2年之前

type MyInt1 int是定义了一个新的类型,Go是强类型语言,所以var i1 MyInt1 = i是不允许的,意思是并不允许将int类型的值赋给MyInt1类型的变量。 type MyInt2 = int是给int类型起了一个别名叫MyInt2,既然是别名,那就可以相互赋值。

summers
summers · #31 · 2年之前

type MyInt1 int 定义的新类型 type MyInt2 = int 等于就是别名

修改如下:

var i1 MyInt1 = MyInt1(i)

zoloadang007
zoloadang007 · #32 · 2年之前

打卡

huangyf168
huangyf168 · #33 · 2年之前

打卡

feiyang
feiyang · #34 · 2年之前

type MyInt1 int是定义了一个新的类型, type MyInt2 = int是给int类型起了一个别名叫MyInt2

aviptle
aviptle · #35 · 2年之前

打卡

owen
owen · #36 · 2年之前

打卡

liuzhenyudayu
liuzhenyudayu · #37 · 2年之前

类型别名棒棒哒

feiyang
feiyang · #38 · 2年之前
flyZ
flyZ · #39 · 2年之前

make

YuPeng
YuPeng · #40 · 2年之前

mark

hasbug
hasbug · #41 · 2年之前

mark

1174en
1174en · #42 · 2年之前

m

wangxiaocuo
wangxiaocuo · #43 · 2年之前

打卡

lijinmin
lijinmin · #44 · 2年之前

打卡

BigBigGopher
BigBigGopher · #45 · 大约1年之前

mk

BigBigGopher
BigBigGopher · #46 · 12月之前

注意,类型别名的定义是=

feiyang
feiyang · #47 · 8月之前

type MyInt1 int 新类型
type MyInt2 = int 别名

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传