当前位置: 首页 > news >正文

沈阳做网站优化erp信息管理系统

沈阳做网站优化,erp信息管理系统,网站支付模块,wordpress 问卷插件往期回顾#xff1a; Go语言开发小技巧易错点100例#xff08;一#xff09;Go语言开发小技巧易错点100例#xff08;二#xff09;Go语言开发小技巧易错点100例#xff08;三#xff09;Go语言开发小技巧易错点100例#xff08;四#xff09;Go…往期回顾 Go语言开发小技巧易错点100例一Go语言开发小技巧易错点100例二Go语言开发小技巧易错点100例三Go语言开发小技巧易错点100例四Go语言开发小技巧易错点100例五Go语言开发小技巧易错点100例六Go语言开发小技巧易错点100例七Go语言开发小技巧易错点100例八Go语言开发小技巧易错点100例九Go语言开发小技巧易错点100例十 本期看点技巧类用【技】表示易错点用【易】表示 Go函数式编程【技】不建议map使用指针类型作为Key【易】直接使用值为nil的slice和map【易】 正文开始 Go函数式编程 函数式编程是一种编程范式。函数式编程语言最重要的基础是λ演算λ演算的函数可以接受函数当作输入参数和输出返回值。与指令式编程相比函数式编程强调函数的计算比指令的执行重要。与过程化编程相比函数式编程里函数的计算可随时调用。 此外在函数式编程中函数是一等公民这意味着它们可以绑定到名称包括本地标识符作为参数传递并从其他函数返回就像任何其他数据类型一样。这允许以声明性和可组合的风格编写程序其中小功能以模块化方式组合。 我们来展示一下Go语言的函数式编程大家可以猜想一下这段代码的运行结果 func PlayFunc(str string, fn func() error) error {fmt.Println(str)defer func() {fmt.Println(defer 1 ...)}()defer func() {fmt.Println(defer 2 ...)}()return fn() }func main() {err : PlayFunc(string ..., func() error {fmt.Println(func ...)return nil})fmt.Println(err) }答案 string ... func ... defer 2 ... defer 1 ... nil不建议map使用指针类型作为Key 在Go语言中指针类型不能作为map的键key的主要原因是因为指针的值是动态的并且可能会发生变化。当使用指针作为map的键时如果两个指针指向同一个内存地址它们被认为是相等的但是如果指针所指向的值发生变化那么这两个指针就不再相等了。 举个例子 type Student struct {Id stringName string }func TestMapPointKey(t *testing.T) {m : make(map[*Student]struct{})m[Student{Id: 1, Name: zs}] struct{}{}_, ok : m[Student{Id: 1, Name: zs}]fmt.Println(ok) // false }为了解决这个问题Go语言规定map的键必须是不可变immutable的类型例如基本类型如整数、字符串等或者具有只读属性的复合类型如数组、结构体等。这些类型的值在创建后就不能被修改因此它们可以作为map的键使用。 比如这样 func TestMap(t *testing.T) {m : make(map[Student]struct{})m[Student{Id: 1, Name: zs}] struct{}{}_, ok : m[*Student{Id: 1, Name: zs}]fmt.Println(ok) // true }基本数据类型下的指针类型也会存在这个问题 func TestMapInt(t *testing.T) {m : make(map[*int]struct{})p : 1m[p] struct{}{}p1 : 1_, ok : m[p1]fmt.Println(ok) // false m2 : make(map[int]struct{})p2 : 1m2[p2] struct{}{}p3 : 1_, ok m2[p3]fmt.Println(ok) // true }总结起来Go语言中指针类型不能作为map的键是因为指针的值是动态的可能会发生变化而map的键需要是不可变的类型。 直接使用值为nil的slice和map func TestEmptyMap(t *testing.T) {var m map[string]struct{}m[name] struct{}{} }这段代码是一个Go语言的测试函数但是它有一个错误。声明了一个名为m的map该map的键是字符串类型而值是空结构体类型struct{}。由于m是一个空的map即它还没有任何键值对因此不能直接赋值。这将导致运行时错误。为了修复这个错误需要首先为map m分配一个值比如 m make(map[string]struct{})然后再尝试插入键值对。
http://www.zqtcl.cn/news/848350/

相关文章:

  • 社区网站建设方案pptwordpress用户名在哪看
  • 浙江企业响应式网站建设公司简介如何写
  • 自己做静态网站的步骤店面设计在线
  • 活动汪活动策划网站wordpress 无法保存
  • 门户网站开发案例兰州需要做网站的公司有哪些
  • 东莞企业网站asp网站怎么安装
  • 个人做公司网站网站备案取消接入
  • 崇信网站建设it外包的收益主要有哪些
  • 安陆做网站多少钱免费网站定制
  • 快递网站模版长春好的做网站公司有哪些
  • 怎么利用公司网站开发客户网站建设重点步骤
  • 网站站内推广用个人电脑做网站的步骤
  • 网站设计主要包含3个方面陕西城乡住房建设部网站
  • 专门做汽车配件的网站东莞招聘网有哪些比较好
  • 网站前台怎么套用织梦后台小网站怎么建设
  • 网站框架代码深圳手机网站设计
  • 更改网站主题九江建网站的公司
  • 如何分析一个网站网站页面建设
  • 做网站好网页制作3个网页的网站图片
  • 合肥网站建设网站推广新的网站建设一般多少钱
  • 北京网站改版哪家好网站关键词怎样做优化
  • 网站开发行业分析wordpress 粘贴表格
  • 网站开发的招标参数网络科技公司网站源码下载
  • 属于网络营销站点推广的是seo好wordpress主题
  • j2ee只做网站阿里企业邮箱免费
  • 做企业网站需要买什么资料室内设计学徒
  • 网站新增关键词设计公司logo公司文化
  • 怎么写一个网站程序农产品网站如何做地推
  • 北京网站优化服务商有了域名怎么建网站
  • 转运网站开发国外永久免费crm系统