获得徽章 0
Go语言程序开发的注意事项\n1) Go源文件以“go”为扩展名。\n\n2)Go应用程序的执行入口是mainO函数。这个是和其它编程语言(比如java/c)\n\n3)Go语言严格区分大小写。\n\n4) Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang 的简洁性。\n\n5)Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错\n\n6)go语言定义的变量或者import的包如果没有使用到,代码不能编译通过。\n\n7)大括号都是成对出现的,缺一不可
展开
评论
1、从一个map对象中根据key获取值。其中map的通用类型可以定义为:map[string]interface{}
前提条件存在一个上述类型的map定义
var m map[string]interface{} = make(map[string]interface{})
可以有两种方式来获取对象
(1). 方法一
value, ok := m[key]
(2). 方法二
value := m[key]

问题:value的类型为interface{},可以为值类型或指针类型,如果给定的key在map中不存在,对于不同value类型的结果会是怎样的?

(1). 如果是值类型,如果给定的key不存在,从map获取值后,value的值为
string类型,value为空串
数值类型,value为0
结构体类型,value为结构体的默认值,结构体中包含的每一种类型的值参考上述规则
展开
评论
垃圾回收:Go语言使用了垃圾回收机制,可以自动管理动态分配的内存。这意味着开发者可以更专注于业务逻辑,而无需过多关注内存管理,减少了内存泄漏等问题的发生。

开发效率高:Go语言提供了丰富的标准库,涵盖了许多常用的功能,例如网络、文件处理、加密等。同时,Go语言还有一个活跃的开源社区,有大量的第三方库和工具可以使用,可以加快开发速度。

良好的可读性和可维护性:Go语言的语法设计注重可读性和一致性,代码风格规范统一,使得团队协作变得更加方便。此外,Go语言还倡导编写简洁、清晰的代码,注重代码的可维护性。
展开
评论
学习Go语言是一个令人愉快且富有挑战性的过程。以下是一些学习Go语言的心得体会:

简洁而高效:Go语言的语法设计简洁明了,易于理解和上手。它剥离了许多其他语言中常见的复杂特性,减少了学习曲线。同时,Go语言在性能方面表现出色,具有出色的并发处理能力和高效的内存管理,使得开发高性能的应用程序变得更加容易。

并发编程的支持:Go语言内置了强大的并发编程支持,通过goroutine和channel的机制,可以轻松地编写并发程序。这种并发模型的设计使得编写高效、可靠的并发程序变得相对简单。

垃圾回收:Go语言使用了垃圾回收机制,可以自动管理动态分配的内存。这意味着开发者可以更专注于业务逻辑,而无需过多关注内存管理,减少了内存泄漏等问题的发生。

开发效率高:Go语言提供了丰富的标准库,涵盖了许多常用的功能,例如网络、文件处理、加密等。同时,Go语言还有一个活跃的开源社区,有大量的第三方库和工具可以使用,可以加快开发速度。

良好的可读性和可维护性:Go语言的语法设计注重可读性和一致性,代码风格规范统一,使得团队协作变得更加方便。此外,Go语言还倡导编写简洁、清晰的代码,注重代码的可维护性。

跨平台支持:Go语言具有强大的跨平台能力,可以在多个操作系统上编译和运行,包括Windows、Linux、macOS等。

总的来说,学习Go语言是一项具有挑战性但非常值得的任务。它有着简洁高效的语法设计、强大的并发编程支持、良好的开发效率和可读性,以及跨平台的能力。因此,无论是初学者还是有经验的开发人员,都可以通过学习Go语言来提升自己的编程技能。
展开
评论
主线程结束,协程也会结束
浏览器中主线程使用死循环,它跑去协程时,主协程同步往下走,可以输入验证码,不需等待发送的3秒,不会造成卡的感觉。给用户便捷的体验

协程 使用: go 函数名()
1.解决主线程结束,协程也结束的问题
waitGroup
wg.Add(n)几个协程函数 wg.done()n-1
wg.wait()告诉主线程等一下协程
2.解决获取协程函数返回值的问题
协程安全
CPU同时只能执行一个请求,时间近,请求同,CPU会认为是同一个请求,造成协程安全问题
展开
评论
协程安全
CPU同时只能执行一个请求,时间近,请求同,CPU会认为是同一个请求,造成协程安全问题
制造一把锁,哪个协程函数先抢到谁先执行
获取协程函数返回值
声明切片,map全局变量
在函数中对该变量写入
同时对map写入,也可能会出现报错
用锁
锁只对最容易冲突的地方上
展开
评论
现在就一个感觉,学无止境,学完golang语法,学gin,学完gin学gorm
评论
map 相当于键值对,引用数据类型,1.默认值为nil,定义,创建空间,复制2.直接实例化
​结构体转jason,变量名小写就不会被序列化前端,小驼峰,(小写开头),而小写开头不会被序列化,用于前端 jason反引号"-"也不会被序列化
位运算
评论
主线程结束,协程也会结束
浏览器中主线程使用死循环,它跑去协程时,主协程同步往下走,可以输入验证码,不需等待发送的3秒,不会造成卡的感觉。给用户便捷的体验

协程 使用: go 函数名()
1.解决主线程结束,协程也结束的问题
waitGroup
wg.Add(n)几个协程函数 wg.done()n-1
wg.wait()告诉主线程等一下协程
2.解决获取协程函数返回值的问题
展开
评论
golang笔记3
主线程结束,协程也会结束
浏览器中主线程使用死循环,它跑去协程时,主协程同步往下走,可以输入验证码,不需等待发送的3秒,不会造成卡的感觉。给用户便捷的体验

协程 使用: go 函数名()
1.解决主线程结束,协程也结束的问题
waitGroup
wg.Add(n)几个协程函数 wg.done()n-1
wg.wait()告诉主线程等一下协程
2.解决获取协程函数返回值的问题
协程安全
CPU同时只能执行一个请求,时间近,请求同,CPU会认为是同一个请求,造成协程安全问题
制造一把锁,哪个协程函数先抢到谁先执行
获取协程函数返回值
声明切片,map全局变量
在函数中对该变量写入
同时对map写入,也可能会出现报错
用锁
锁只对最容易冲突的地方上
展开
评论
语法学习第二天
golang笔记
golang,切片前闭后开,前不写默认0,右不写默认长度
​切片是对数组的引用,切片变,数组也改。是引用类型,切片变量默认值为nil,其元素默认为0,底层也是数组,长度到边界后,拷贝至新的内存空间中。超过当前容量后,将容量翻倍。
[]string ("唱",“跳”,“rap”)即为一个切片值
字符串切片中 汉字也是一个切片值。
但汉字占3个字节,在字符切片中,汉字会被切成三个切片值。
[] 是切片类型,里头没值是切片类型,数据类型(变量名)为强制类型转换,验明真身方法,函数内部,打印一遍,形参地址,函数外部打印一遍实参地址,普通变量%p,&变量名 不同则为值传递。
*数据类型
​%p变量名

​子继承父亲,也会继承父亲的函数
变量名​*数据类型 为改变该变量值
​格式 (*变量名).元素=
​结构体中
​变量名.函数(该函数可为值传递函数)

map 相当于键值对,引用数据类型,1.默认值为nil,定义,创建空间,复制2.直接实例化
​结构体转jason,变量名小写就不会被序列化前端,小驼峰,(小写开头),而小写开头不会被序列化,用于前端 jason反引号"-"也不会被序列化
位运算
右移前补零,左移后补零,看尖端是哪个方向则为移动方向
展开
评论
今天学习了golang语法,做了一个实例,发现在有c++,python,Java的学习基础上学习golang语法是比较简单的,后面的日子里用golang做项目,实现工程,框架才是更为困难的。
评论