李恒道 发表于 2023-3-17 20:44:51

golang类型系统

# 命名类型和未命名类型
命名类型

如定义好的接口,结构等,称之为自定义类型
或int,string等基础类类型,称之为预声明类型

未命名类型

如数组,切片,字典,通道,指针,函数字面量以及结构或接口声明
称之为类型字面量

struct{
    age int
}{18}
# 底层类型
所有的类型都具有底层类型
预声明类型与类型字面量类型的底层类型是他们自身
自定义类型会从上到下直到找到预声明类型或类型字面量
自定义类型会自动继承底层类型的操作
如类型基于silce,map等支持range的
新类型仍然可以使用range
# 类型相同判断与赋值
## 类型相同
1.两个命名类型相同条件是类型声明的语句完全相同
2.命名类型与类型字面量永远不相同
3.两个类型字面量的对比规则是类型字面量的结构相同,内部的类型也相同
4.类型别名声明的两个类型相同
## 类型赋值
1.两个类型相同
2.具有相同的底层类型,并其中之一必须为未命名类型
3.其中之一为接口类型
4.赋值为nil,并且赋值给pointer,function,silce,map,channel,interface类型
5.赋值的是一个字面量并可以表示赋值的类型的值
# 类型的强制转换
需要满足以下任一条件
假设为a T=x
1.x可以直接赋值给T
2.具有相同的底层类型
3.x是一个整数型或者[]byte类型的值,T是一个string类型
4.x是一个字符串,T是[]byte或[]rune
5.x和T都是未命名的指针类型,并指针指向的类型的底层类型相同
第五条个人认为是指针的底层类型永远不会相等,所以以指针指向的类型的底层类型为准
# 来源
Golang核心编程第三章类型系统




啊麟 发表于 2023-3-17 21:45:13

你这个头像一点都不符合你气质,快给我换掉!!!

李恒道 发表于 2023-3-17 22:54:43

啊麟 发表于 2023-3-17 21:45
你这个头像一点都不符合你气质,快给我换掉!!!

不觉得很可爱吗!

啊麟 发表于 2023-3-17 23:43:31

李恒道 发表于 2023-3-17 22:54
不觉得很可爱吗!

给我换回宇航员!!

李恒道 发表于 2023-3-17 23:49:51

啊麟 发表于 2023-3-17 23:43
给我换回宇航员!!

我不!

Cupid9527 发表于 2023-3-18 13:49:47

啊麟 发表于 2023-3-17 21:45
你这个头像一点都不符合你气质,快给我换掉!!!

汝头像也不咋滴 {:4_108:}

wjy0 发表于 2023-3-27 00:16:15

本帖最后由 wjy0 于 2023-3-27 00:20 编辑

gg转战后端了,gg悟性高确实不能只浪费在js

清清清 发表于 2023-3-27 00:29:42

都说Go goroutine非常厉害,不就是js的异步么,用着还不如js顺手。{:4_89:}不过 golang 比 js 更底层,可以补起前端的一些短板。也能写后端。不然用express、koa、nest 这些,感觉还是要多会一点。

李恒道 发表于 2023-3-27 01:15:12

清清清 发表于 2023-3-27 00:29
都说Go goroutine非常厉害,不就是js的异步么,用着还不如js顺手。不过 golang 比 js 更底层,可 ...
主要nestjs之类的国内不是特别承认
只能算前端的补足短板的简历添一笔
不会因为nestjs就高看你一眼{:4_98:}
工作还会逼着写
我们公司就用的nestjs
golang的话还能装一下全栈
我最近也是刚学
说实话语法还是不是特别适应的...
微服务啥的也还是感觉nest更方便

李恒道 发表于 2023-3-27 01:17:03

wjy0 发表于 2023-3-27 00:16
gg转战后端了,gg悟性高确实不能只浪费在js

{:4_98:}主要前端感觉没什么自己特别喜欢的东西了
再往深了研究库源码感觉回馈太差
就干脆放弃去搞搞后端做crud了
页: [1] 2 3
查看完整版本: golang类型系统