为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第21天 go语言 TS环境与语法

课程名称:GO开发工程师 课程章节:第一章:TS环境搭建预配置;第二章:TS与JS;第三章:TS语法基础 课程讲师: ccmouse 课程内容: 一. TS环境的搭建与配置 # colorcar ## 如何编译以及运行小程序 1. `cd wx` 2. `npm install` 3. 打开小程序开发工具,点击编译(npm run tsc),编译成js文件 二. TS 特有类型 literal type union types enum用法 示例: // literal type => 类似枚举 let answer: 'yes' | 'no' |...

88浏览
0推荐
0评论

【九月打卡】第20天 go语言租辆酷车小程序初体验

课程名称:GO开发工程师 课程章节:4-1/2:给小程序添加地图组件;4-3/4/5:Docker介绍;4-5:汽车位置实时更新展示 课程讲师: ccmouse 课程内容: 一. 小程序添加地图组件 index.wxml: 微信小程序里的html index.wxss :微信小程序里的css // index.wxml 微信小程序里的页面文件格式 <map id="map" class="map" latitude="{{location.latitude}}" longitude="{{location.longitude}}"...

108浏览
0推荐
0评论

【九月打卡】第19天 go语言 小程序渲染、生命周期

课程名称:GO开发工程师 课程章节:2-1/2: 小程序渲染机制;3-1/2:小程序生命周期 课程讲师: ccmouse 课程内容: 渲染机制 运行 1. 进入场景:营销用,用户通过什么场景进入小程序 2. 页面路径:可控制,比如下拉进来首页、群聊进来就不是首页 3. 页面参数 setData 1. 逻辑层(js交互) + 渲染层(页面样式) 2. setData的过程: 逻辑层虚拟 DOM 树的遍历和更新,触发组件生命周期和 observer 等; 将 data 从逻辑层传输到视图层; 视图层虚拟 DOM 树的更新、

59浏览
0推荐
0评论

【九月打卡】第18天 go语言gin框架下+小程序了解

课程名称:GO开发工程师 课程章节:8-5:为gin增加middleware;阶段二1-1->1-5小程序 课程讲师: ccmouse 课程内容: 中间件 所有的请求都会经过中间件,中间件里需执行Next()才能继续执行; 增加路由、请求ID、响应时长记录。 r.Use( func(c *gin.Context) { // path, log latency, response code s := time.Now() logger.Info("incoming request", zap.String("path", c.Request.URL.Path)) c.Next()...

62浏览
0推荐
0评论

【九月打卡】第17天 go语言gin框架

课程名称:GO开发工程师 课程章节:8-4: gin 框架介绍;8-5:为gin增加middleware 课程讲师: ccmouse 课程内容: 下载包 go get -u github.com/gin-gonic/gin go get -u go.uber.org/zap gin框架、http请求与中间件 r := gin.Default() logger, err:= zap.NewProduction() if err != nil { panic(err) } // 中间件 // 打印日志 r.Use(func(c *gin.Context) { // path, log, response code...

96浏览
0推荐
0评论

【九月打卡】第16天 go语言json数据

课程名称:GO开发工程师 课程章节:8-2: json数据格式的处理;8-3第三方API数据格式的解析技巧 课程讲师: ccmouse 课程内容: 1.序列化 // 序列化 func marshal() { o := Order{ ID: "1234", Quantity: 3, TotalPrice: 30, Item: []OrderItem{ { ID: "item_1", Name: "learn go", Price: 10, }, { ID: "item_2", Name: "interview", Price:...

96浏览
0推荐
0评论

【九月打卡】第15天 go语言http标准库

课程名称:GO开发工程师 课程章节:8-1: http标准库 课程讲师: ccmouse 课程内容: http作为客户端发起请求 // 创建一个request request, err := http.NewRequest(http.MethodGet, "http://www.imooc.com", nil) // 设置请求头部 // 设置 user-agent后,会访问手机版网页 request.Header.Add("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)...

69浏览
0推荐
0评论

【九月打卡】第14天 go语言并发任务的控制

课程名称:GO开发工程师 课程章节:6-8:并发任务非控制 课程讲师: ccmouse 课程内容: 非阻塞等待代码示例 func nonBlockingWait(c chan string) (string, bool) { select { case m := <-c: return m, true default: // 加了default就实现了非阻塞式等待 return "", false } } 等待超时代码示例 func timeOutWait(c chan string, timeout time.Duration) (string, bool) { select { case m :=...

65浏览
0推荐
0评论

【九月打卡】第13天 go语言并发模式

课程名称:GO开发工程师 课程章节:6-5:传统同步机制;6-6/7:并发模式 课程讲师: ccmouse 课程内容: 传统同步机制 type atomicInt struct { value int lock sync.Mutex // 互斥锁 } func (a *atomicInt) increment() { fmt.Println("safe increment") // 采用匿名函数对某一块代码区进行保护 // 这样defer只控制这个匿名函数,函数匿名退出即释放锁 func() { a.lock.Lock() defer a.lock.Unlock() a.value++ }() } func...

53浏览
0推荐
0评论

【九月打卡】第12天 go语言Select

课程名称:GO开发工程师 课程章节:6-4:Select 课程讲师: ccmouse 课程内容: select的基本用法示例: func test1() { var c1, c2 chan int // 只声明,未赋值,都是 nil // select: 里面的case谁先收到就打印谁 // chan里读写数据都是阻塞订单 // 非阻塞: select + default组合 select { case n := <-c1: fmt.Println("received value from c1: ", n) case n := <-c2: fmt.Println("received...

76浏览
0推荐
0评论

【九月打卡】第11天 go语言接口的值类型

课程名称:GO开发工程师 课程章节:6-2:使用channel等待goroutine结束;6-3:使用channel遍历树 课程讲师: ccmouse 课程内容: 使用channel等待goroutine结束示例: type worker struct { in chan int done chan bool } func doWork(id int, c chan int, done chan bool) { for n := range c { fmt.Printf("id: %d---> n: %c\n", id, n) done <- true } } func...

85浏览
0推荐
0评论

【九月打卡】第10天 go语言channel下

课程名称:GO开发工程师 课程章节:6-1:channel 课程讲师: ccmouse 课程内容: 约束channel只写只读: // chan<- int: 只能往chan里写数据 // <-chan int: 只能从chan里读数据 func createWorkerSpecChan(i int) chan<- int { c := make(chan int) go func() { for { fmt.Printf("i: %d---> n: %c\n", i, <-c) } }() return c } channel缓冲区 func buffered() { c...

89浏览
0推荐
0评论

【九月打卡】第9天 go语言channel

课程名称:GO开发工程师 课程章节:6-1:channel 课程讲师: ccmouse 课程内容: 创建channel: func chanDemoDeadlock() { //var c chan int 声明一个channel c := make(chan int) // 创建一个channel c <- 1 // 往channel里写数据 c <- 2 n := <-c // 从channel里读数据 fmt.Println(n) // fatal error: all goroutines are asleep - deadlock! // deadlock的原因:往channel里写数据时没人接收...

83浏览
0推荐
0评论

【九月打卡】第8天 go语言Goroutine

课程名称:GO开发工程师 课程章节:5-1goroutine;5-2go语言的调度器 课程讲师: ccmouse 课程内容: go routine的定义 关键字->go: 开协程(Coroutine),并发执行;任何函数只要加上go就能给调度器运行 不需要在定义时区分是否是异步函数 调度器会在合适的时机切换(传统的协程需要手动指定切换时机) go run -race *.go 检测数据访问冲突 go routine 可能的切换点 I/O, select、channel、等待锁、函数调用(有时)、 runtime.Gosched() 只是参考,并不能保证在这些点

54浏览
0推荐
0评论

【九月打卡】第7天 go语言测试与性能调优

课程名称:GO开发工程师 课程章节:4-1:测试;4-2:代码覆盖率和性能测试;4-3:使用pprof进行性能调优;4-4/5:测试http服务器;4-6生成文档和示例代码;4-7:测试总结 课程讲师: ccmouse 课程内容: 传统测试 测试数据和测试逻辑混在一起 出错信息不明确 一旦一个 数据出错,测试全部结束 表格驱动测试 分离的测试数据和测试逻辑 明确的出错信息 可以部分失败 go语言的语法使得我们更易实践表格驱动测试 命令行进行测试: 进入待测试的文件所在的目录 go test . 覆盖率

72浏览
0推荐
0评论

【九月打卡】第6天 go语言错误处理与资源管理

课程名称:GO开发工程师 课程章节:3-1:defer的调用;3-2:错误处理概念;2-3/4:服务器统一错误处理 课程讲师: ccmouse 课程内容: defer: 作用:确保在函数结束时调用 执行顺序:多个defer遵循栈规则, 先进后出 什么时候使用:defer: open/close;lock/unlock;PrintHeader/PrintFooter defer代码示例 func tryDefer() { defer fmt.Println(1) defer fmt.Println(2) // 即使中间 return 或者 panic 都不会影响defer的输出 fmt.Println(3) // 3, 2, 1...

133浏览
0推荐
0评论

【九月打卡】第5天 go语言函数式编程

课程名称:GO开发工程师 课程章节:2-1函数式编程;2-2函数式编程例1;2-3函数式编程例2 课程讲师: ccmouse 课程内容: 函数编程: 参数、变量、返回值都可以是函数 函数指针: C++里只能使用函数指针,不能将函数直接传递给别人 正统函数式编程: ​不可变性:不能有状态,只有常量与函数 ​函数只能有一个参数 闭包: 函数体内的自由变量链接到了函数体外部,整个结构称之为闭包 go 语言不是正统的函数式编程 ​斐波拉契数列(为函数实现接口) func fibonacci() intGen { a

81浏览
0推荐
0评论

【九月打卡】第4天 go语言接口的组合、函数式编程

课程名称:GO开发工程师 课程章节:1-5接口的组合;1-6常用的系统接口;2-1函数式编程 课程讲师: ccmouse 课程内容: 接口的组合 使用者定义接口以及接口里的方法;使用者还可以将接口组合成新的接口; 实现者只管方法的实现,不关心外部使用者的接口类型以及接口的组合形式。 使用者组合示例代码: type Retriever interface { Get(url string) string } type Poster interface { Post(url string, form map[string]string) string } // RetrieverPoster 接口组

71浏览
0推荐
0评论

【九月打卡】第3天 go语言接口的值类型

课程名称:GO开发工程师 课程章节:1-4接口的值类型 课程讲师: ccmouse 课程内容: 接口里的变量有什么; 实现者的类型 + 实现者的值 / 实现值值的指针 ​接口变量自带指针; 接口变量同样通过值传递,几乎用不到接口变量的指针 ; 指针接收者只能以指针方式使用,值类型的接收者两者均可(指针方式或者值方式) ; 用接口类型表示任何类型: interface{}; 使用Type Assertion去验证类型是否正确:realRetriever := r.(real.Retriever),示例是假定r的类型是(real.Retri

64浏览
0推荐
0评论

【九月打卡】第2天 go语言接口的概念、定义、实现

课程名称:GO开发工程师 课程章节:接口的概念、duck typing的概念、接口的定义和实现 课程讲师: ccmouse 课程内容: duck typing:描述外部行为而非内部结构(比如玩具鸭:外形像鸭子,能够在水上游动),go语言的类duck typing:灵活(只需要实现接口里的方法)+智能(不需要注释说明入参类型) 目录整理:同一个目录下不能有多个main函数(入口函数),需要将不同的main函数所在的文件提取到不同的文件夹。 go 语言的接口:使用者定义方法,实现者有这个方法。定义一个接口类型,就

195浏览
0推荐
0评论
首页上一页12下一页尾页
意见反馈 帮助中心 APP下载
官方微信