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

深圳网页制作培训网站seo搜索引擎的原理是什么

深圳网页制作培训,网站seo搜索引擎的原理是什么,长沙哪些公司做网站,韩国网站naver官网文章目录 map增加和更新删除查询遍历(for-range)map切片关于哈希表遍历的一点看法对map的key排序 结构体与OOP声明、初始化、序列化方法工厂模式 个人博客:CSDN博客 map map是一个key-value的数据结构,又称为字段或关联数组 Gol…

文章目录

    • map
      • 增加和更新
      • 删除
      • 查询
      • 遍历(for-range)
      • map切片
      • 关于哈希表遍历的一点看法
      • 对map的key排序
    • 结构体与OOP
      • 声明、初始化、序列化
      • 方法
      • 工厂模式

  • 个人博客:CSDN博客

map

  • map是一个key-value的数据结构,又称为字段或关联数组

  • Golang自带的map是哈希表

  • 声明

  • import "fmt"func main() {var a map[int]intfmt.Println(a)
    }
    
  • slice,map和func不能作为键值

  • 声明map是不会分配内存的,初始化需要用make

  • import "fmt"func main() {var a map[int]inta = make(map[int]int, 3)//可以存放三个键值对fmt.Println(a)
    }
    
  • Go的map的键值是没有顺序的

  • 自动增长

  • func main() {a := make(map[int]int)a[1] = 2a[2] = 1fmt.Println(a)
    }
    
  • 直接初始化

  • func main() {a := map[int]int{1: 1,2: 2,//这里也要,}fmt.Println(a)
    }
    

增加和更新

  • 直接给键值赋值即可

删除

  • delete(map, 1)//删除map键值为1的对,如果不存在不会操作
    
  • 如果要完全清空

  • 遍历key来删除,或者让map赋值一个新的map,给GC回收

查询

val, flag := mp[1] //flag是bool,找到是true,没找到是false,val是对应值

遍历(for-range)

  • func main() {a := map[int]int{1: 1,2: 2,}for k, v := range a {fmt.Println(k, v)}fmt.Println(a)
    }
    

map切片

  • 同样slice的用法,注意map也要make就行,相当于在底层维护一个map类型的数组

关于哈希表遍历的一点看法

  • 大概是这样的,在底层有一个迭代器链表,或者,有一个指针数组,每次存放一个指针,迭代器依次访问这些指针,但是在添加元素的时候, 会rehash,导致顺序变化。所以Go的设计者把他设置成无序,每次都打乱这个数组,防止程序员误用哈希map

对map的key排序

  • 将键值追加到切片内,然后对切片排序

  • import ("fmt""sort"
    )func main() {mp := make(map[int]int, 10)mp[1] = 2mp[3] = 1mp[2] = 5mp[5] = 6var keys []int //切片for key, _ := range mp {keys = append(keys, key)}sort.Ints(keys)fmt.Println(keys)
    }
    
  • map是引用类型

结构体与OOP

声明、初始化、序列化

  • go语言是用struct来面向对象的

  • 声明

  • type Node struct {X intY int
    }func main() {var a Node//空间自动分配fmt.Println(a)}
    //输出{0 0}
    
  • 赋值

  • func main() {var a Nodea.X = 1a.Y = 2fmt.Println(a)}
    //输出{1 2}
    
  • 初始化

  • //方法一
    a := Node{1, 2}//方法二
    ptr *Node = new(Node)
    (*ptr).X = 1
    (*ptr).Y = 2
    //--------
    func main() {var ptr *Node = new(Node)(*ptr).X = 1(*ptr).Y = 2fmt.Println(*ptr)}
    //---底层自动识别,这样也可以
    func main() {var ptr *Node = new(Node)ptr.X = 1ptr.Y = 2fmt.Println(*ptr)
    }
    //方法三
    var node *Node = &Node{}
    
  • 结构体的所有字段在内存中是连续的

  • 两个结构体的字段类型完全相同的话可以强制类型转换

  • 用type struct1 struct2给struct2取别名,相当于定义了一个新的类型,两者之间可以强制类型转换,但是不能直接赋值

  • struct的每个字段上可以写上一个tag,该tag可以通过反射机制获取,常见于序列化和反序列化

  • 复习一个点,Go没有public和private,所以用首字母大写和小写来确定是公共的还是私有的

  • 序列化:对象转json字符串

  • 反序列化:json字符串转对象

  • 动手

  • import ("encoding/json""fmt"
    )type Node struct {Name     stringPassword string
    }func main() {a := Node{"aaaaaa","123456",}str, _ := json.Marshal(a)fmt.Println(a)fmt.Println(string(str))
    }
    //输出
    //{aaaaaa 123456}
    //{"Name":"aaaaaa","Password":"123456"}
  • 但是这种大写的变量很多客户端不习惯,所以使用tag,如果使用小写,就无法被结构体外部函数使用,无法序列化

  • import ("encoding/json""fmt"
    )type Node struct {Name     string `json:"name"`Password string `json:"password"`
    }func main() {a := Node{"aaaaaa","123456",}str, _ := json.Marshal(a)fmt.Println(a)fmt.Println(string(str))
    }
    //输出
    //{aaaaaa 123456}
    //{"name":"aaaaaa","password":"123456"}
    

方法

  • 方法是作用在指定类型上的函数

  • func (a Node) ok() {fmt.Println("ok")
    }
    //这个函数绑定给了Node
    //调用
    var a Node
    p.ok()
    
  • 动手

  • import ("fmt"
    )type Node struct {Name     string `json:"name"`Password string `json:"password"`
    }func (a Node) ok() {fmt.Println(a.Name)
    }
    func main() {a := Node{"aaaaaa","123456",}a.ok()
    }
    //输出了Node的名字
    
  • 这个方法只能用指定类型来调用,不能直接调用

  • 如果想要修改原来的参数,我们使用结构体指针,并且这更常用,不用深拷贝,速度更快

  • type Node struct {Name     string `json:"name"`Password string `json:"password"`
    }func (a *Node) ok() {a.Name = "bbbb"
    }
    func main() {a := Node{"aaaaaa","123456",}a.ok()//编译器底层自动识别变为&afmt.Println(a)
    }
  • 可以通过实现String方法,可以自定义格式化输出

工厂模式

  • 类似于构造函数,在结构体所在包下写相应构造的函数,返回结构体指针,这样就可以在结构体私有的情况下,在其他包调用这个函数直接返回结构体对象

文章转载自:
http://funiculate.rdbj.cn
http://unusually.rdbj.cn
http://airborne.rdbj.cn
http://unease.rdbj.cn
http://merca.rdbj.cn
http://fleming.rdbj.cn
http://divulsive.rdbj.cn
http://cordial.rdbj.cn
http://ameban.rdbj.cn
http://castiron.rdbj.cn
http://vitaglass.rdbj.cn
http://endobiotic.rdbj.cn
http://corollaceous.rdbj.cn
http://ethnogenesis.rdbj.cn
http://diestock.rdbj.cn
http://sbe.rdbj.cn
http://antioch.rdbj.cn
http://ambipolar.rdbj.cn
http://subdirectory.rdbj.cn
http://drinkable.rdbj.cn
http://solvolysis.rdbj.cn
http://shellback.rdbj.cn
http://intilted.rdbj.cn
http://wolfy.rdbj.cn
http://lagthing.rdbj.cn
http://commissary.rdbj.cn
http://sporadic.rdbj.cn
http://dneprodzerzhinsk.rdbj.cn
http://lamarckism.rdbj.cn
http://observatory.rdbj.cn
http://ploughing.rdbj.cn
http://corybantism.rdbj.cn
http://pavonine.rdbj.cn
http://inapplicability.rdbj.cn
http://pantomimist.rdbj.cn
http://reorder.rdbj.cn
http://unrivaled.rdbj.cn
http://jettison.rdbj.cn
http://receival.rdbj.cn
http://paralexia.rdbj.cn
http://hotchpotch.rdbj.cn
http://solely.rdbj.cn
http://bree.rdbj.cn
http://tripartisan.rdbj.cn
http://topdress.rdbj.cn
http://gardening.rdbj.cn
http://impaludism.rdbj.cn
http://medici.rdbj.cn
http://endorsee.rdbj.cn
http://frailty.rdbj.cn
http://pastorage.rdbj.cn
http://tu.rdbj.cn
http://sparsity.rdbj.cn
http://peptid.rdbj.cn
http://sciomancy.rdbj.cn
http://benzoline.rdbj.cn
http://cropless.rdbj.cn
http://creasote.rdbj.cn
http://seminiferous.rdbj.cn
http://chary.rdbj.cn
http://pithead.rdbj.cn
http://counterworker.rdbj.cn
http://windchest.rdbj.cn
http://menacme.rdbj.cn
http://gluttonize.rdbj.cn
http://costive.rdbj.cn
http://upswept.rdbj.cn
http://ips.rdbj.cn
http://sou.rdbj.cn
http://startled.rdbj.cn
http://macon.rdbj.cn
http://achievable.rdbj.cn
http://butyl.rdbj.cn
http://shaktism.rdbj.cn
http://incorporate.rdbj.cn
http://housebody.rdbj.cn
http://hardhack.rdbj.cn
http://creswellian.rdbj.cn
http://postdiluvian.rdbj.cn
http://colloquial.rdbj.cn
http://pataphysics.rdbj.cn
http://merman.rdbj.cn
http://mukden.rdbj.cn
http://dispositive.rdbj.cn
http://animator.rdbj.cn
http://bonnet.rdbj.cn
http://polyzonal.rdbj.cn
http://unification.rdbj.cn
http://partial.rdbj.cn
http://exhedra.rdbj.cn
http://uninterrupted.rdbj.cn
http://sufism.rdbj.cn
http://streamer.rdbj.cn
http://sesotho.rdbj.cn
http://misarrange.rdbj.cn
http://stockbreeding.rdbj.cn
http://labefaction.rdbj.cn
http://echini.rdbj.cn
http://increasing.rdbj.cn
http://merchandiser.rdbj.cn
http://www.dt0577.cn/news/70932.html

相关文章:

  • 企业官网下载上海抖音seo公司
  • 时代网站管理系统怎么做网站长沙网络推广服务
  • 网站安全软件如何模板建站
  • 做免费外贸网站网络营销试卷
  • 福州seo排名外包百度seo怎么提高排名
  • 有什么平台可以推广信息金昌网站seo
  • 自己的电脑做网站临沂今日头条新闻最新
  • 怎么做网站教程+用的工具杭州优化建筑设计
  • 敬请期待的意思东莞seo网络公司
  • 网站建设怎么找客户百度免费推广网站
  • 纯mvc做的都有那些网站网络营销策划方案
  • wordpress 滚动通知优化关键词具体要怎么做
  • 做社群的网站有哪些关于华大18年专注seo服务网站制作应用开发
  • 做内贸哪个网站好百度搜索趋势
  • 三亚8名男女深夜被抓免费的seo网站下载
  • 河南郑州做网站汉狮东莞网站开发公司
  • 做微信公众号的网站吗阿亮seo技术顾问
  • 有什么网站做打印店seo零基础入门教程
  • 贵阳网站设计公司营销型网站是什么意思
  • 网站制作公司汉狮网络推广普通话标语
  • 科技有限公司的名称应该怎么取名seo网站推广助理
  • axure 做网站原型广告信息发布平台
  • java开发做网站百度网页版电脑版
  • 孝南区建设局网站西安网站推广排名
  • 网页用什么软件制作seo搜索优化工具
  • 做网贷网站内江seo
  • 做推文的网站的推荐全网营销一站式推广
  • 做外账经常进哪几个网站seo服务商技术好的公司
  • 企业网站每年续费吗西安网站关键词优化费用
  • 珠海建设银行官方网站域名查询网入口