每次学习并整理一个Golang的知识点,每天进步一点点。今天来学习下type的一个知识点🤔。

代码片段

观察如下代码片段,判断能否编译通过;如果可以,写出输出结果?

 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 num int = 0
	var i1 myInt1 = num
	var i2 myInt2 = num
	fmt.Println(i1, i2)
}

思考后看答案…

思考后看答案


答疑解惑

编译不通过。 输出结果:cannot use num (type int) as type myInt1 in assignment

type myInt1 int意思是通过int类型创建一个新的自定义类型myInt1,type myInt2 = int的意思是给int类型取一个别名叫做myInt2,本质上还是int类型;var i1 myInt1 = num,不能把int类型的num赋值给myInt1类型的i1,所以编译不通过;而var i2 myInt2 = num中i2和num同属一个类型,是可以赋值的,i2的值将会为0。

其他相关答案,欢迎在评论区留言补充!

下期提问

观察如下代码片段,判断能否编译通过;如果可以,写出输出结果?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import "fmt"

func add(l []int) []int {
	l = append(l, 10)
	return l
}

func modify(l []int) []int {
	l[0] = 1
	return l
}
func main() {
	a := []int{7, 8, 9}
	add(a)
	fmt.Println(a)
	modify(a)
	fmt.Println(a)
	fmt.Println(append(a, 10))

}

答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步。


欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”或扫描下方二维码:

xujpxm_qrcode_gh