Go 语言从入门到实战
蔡超
Mobvista 技术副总裁兼首席架构师,前亚马逊(中国)首席软件架构师
48919 人已学习
新⼈⾸单¥59
课程目录
已完结/共 55 讲
第一章:Go语言简介 (4讲)
第二章:基本程序结构 (4讲)
第三章:常用集合 (3讲)
第四章:字符串 (1讲)
时长 16:47
第五章:函数 (2讲)
第六章:面向对象编程 (4讲)
第七章:编写好的错误处理 (2讲)
第八章:包和依赖管理 (2讲)
第九章:并发编程 (7讲)
第十章:典型并发任务 (5讲)
第十一章:测试 (3讲)
时长 11:48
时长 07:12
时长 06:15
第十二章:反射和Unsafe (3讲)
时长 08:18
时长 08:03
第十三章:常见架构模式的实现 (2讲)
第十四章:常见任务 (4讲)
时长 04:27
时长 05:14
第十五章:性能调优 (4讲)
第十六章:高可用性服务设计 (5讲)
Go 语言从入门到实战
登录|注册
留言
26
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 06 | 数据类型
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Go语言课程介绍
02 | 内容综述
03 | Go语言简介:历史背景、发展现状及语言特性
04 | 编写第一个Go程序
05 | 变量、常量以及与其他语言的差异
06 | 数据类型
07 | 运算符
08 | 条件和循环
09 | 数组和切片
10 | Map声明、元素访问及遍历
11 | Map与工厂模式,在Go语言中实现Set
12 | 字符串
13 | Go语言的函数
14 | 可变参数和defer
15 | 行为的定义和实现
16 | Go语言的相关接口
17 | 扩展与复用
18 | 不一样的接口类型,一样的多态
19 | 编写好的错误处理
20 | panic和recover
21 | 构建可复用的模块(包)
22 | 依赖管理
23 | 协程机制
24 | 共享内存并发机制
25 | CSP并发机制
26 | 多路选择和超时
27 | channel的关闭和广播
28 | 任务的取消
29 | Context与任务取消
30 | 只运行一次
31 | 仅需任意任务完成
32 | 所有任务完成
33 | 对象池
34 | sync.pool对象缓存
35 | 单元测试
36 | Benchmark
37 | BDD
38 | 反射编程
39 | 万能程序
40 | 不安全编程
41 | 实现pipe-filter framework
42 | 实现micro-kernel framework
43 | 内置JSON解析
44 | easyjson
45 | HTTP服务
46 | 构建RESTful服务
47 | 性能分析工具
48 | 性能调优示例
49 | 别让性能被锁住
50 | GC友好的代码
51 | 高效字符串连接
52 | 面向错误的设计
53 | 面向恢复的设计
54 | Chaos Engineering
55 | 结课测试&结束语
登录 后留言

全部留言(26)

  • 最新
  • 精选
忽然之间
今日总结: ### 基本数据类型 ```go // 整型 int int8 int16 int32 int64 // 无符号整型 uint uint8 uint16 uint32 uint64 // 浮点类型 float32 float64 // 复数 complex64 complex128 // 布尔类型 bool // 字符 string // 字节,uint8的别名 byte // int32 //表示一个Unicode 码点 rune ``` ### 零值 > 当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下: ``` bool :false integer :0 float :0.0 string:"" pointer, function, interface, slice, channel, map:nil ``` 对于复合类型, go语言会自动递归地将每一个元素初始化为其类型对应的零值。比如:数组, 结构体 。 ### 整型占用字节问题 int,uint整型:和机器平台有关,最小32位,占用4字节,64位,占用8字节。 ### 类型转换 不支持不同类型之间隐式转换,即便是类型别名和同类型之间也不行。 ### 数值范围 类型 | 长度(字节) | 数值范围 --- |--- |--- int8 | 1 | -128~127 (-2^(8-1) ~ 2^7-1) uint8 | 1 | 0~255 (0 ~ 2^8-1) int16 | 2 | -32768~32767 uint16 | 2 | 0~65535 int32 | 4 | -2^31 ~ 2^31-1 (-2147483648~2147483647) uint32 | 4 | 0~2^32-1 (0~4294967295) int64 | 8 | -2^63 ~2^63-1 uint64 | 8 | 0~2^63 ### int占用字节数测试 ```go // //机器位数 cpu := runtime.GOARCH //int占用位数 int_size := strconv.IntSize ``` ### string类型 string 是值类型。默认初始化值是空字符串,不是nil(string类型零值为空字符串) ```go func TestString(t *testing.T) { var s string t.Logf("%T %q", s, s) //string "" } ```

作者回复: 赞!

2019-03-16
3
22
静水流深
老师,是否可以这样理解: type myInt = int ,指的是别名类型,与源类型是相同的类型; type myInt int ,指的是类型再定义,与源类型是不同的类型;

作者回复: 可以这样简单理解

2019-07-16
2
3
Ping me
int和unit占多少字节是跟操作系统多少位有关对吗

作者回复: 对。

2019-12-05
1
YI🎐
类型别名在项目中有什么实际意义没有,只是另外取一个名字,有什么好处?

作者回复: 这个不仅仅增加了代码的可读性,由于别名与类型也不能实现隐式转化还提高了正确性。同时,你也可以为你的别名类型定义新的方法。

2019-06-01
2
1
中年男子
请问func TestXxx(t *testing.T)中 t是变量名,*testing.T是类型,那这是个什么类型呢?指针?T是testing包中的一个类型,*testing.T就是这个T类型的指针?您能说明一下怎么理解这个类型吗?

作者回复: 是testing这个包中T类型的指针类型。 testing这个包,在后面“测试”课程中,我们还会讲到

2019-03-06
1
fatty Jack
老师请问下,下面t *testing.T这个参数写法怎么解释? t是变量名? *testing.T是变量类型? func TestXXXX(t *testing.T) { } 谢谢

作者回复: 你的理解是正确。

2019-03-05
2
1
Peter
显示类型转换也要注意遵从小转大吗?

作者回复: 不用。 package qa import ( "fmt" "testing" ) func TestConvert(t *testing.T) { i := int64(10) j := int8(i) fmt.Println(j) }

2020-07-16
XxxxxxxMr
老师啊 ,有个问题,不知道答案是不是在后续章节中。 golang中关于 “传值”还是“传引用”? 如果是值类型,那么传递的就是“值”, 如果是引用类型 传递的就是“引用”。 其中还涉及到什么字典类型、通道类型、函数类型等 都会在后续章节出现吗? 这些类型搞不懂 甚至没有听说过。 请多指教

作者回复: go中都是传值的,至于不同类型,相关章节都有讲,可以耐心往后看

2019-07-30
___
type MyInt int 这个MyInt不是应该为新定义的类型吗? type MyInt = int 这样是可以相互赋值的

作者回复: 是定义一个MyInt类型,其实就是给int起个别名。

2019-03-15
熊大棒@KONAKONA
做为一个资深的码农,怎么能够写代码这么磨蹭,而且还频繁打错基础单词呢?看着特别闹心(一个10年的Coder留言)……
2019-04-30
9
14
收起评论