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

手机品牌网站wordpress图片重命名

手机品牌网站,wordpress图片重命名,个人网站首页界面,注册网站需要房产证一、切片基础 1、切片的定义 切片#xff08;Slice#xff09;是一个拥有相同类型元素的可变长度的序列它是基于数组类型做的一层封装它非常灵活#xff0c;支持自动扩容切片是一个引用类型#xff0c;它的内部结构包含地址、长度和容量声明切片类型的基本语法如下#…一、切片基础 1、切片的定义 切片Slice是一个拥有相同类型元素的可变长度的序列它是基于数组类型做的一层封装它非常灵活支持自动扩容切片是一个引用类型它的内部结构包含地址、长度和容量声明切片类型的基本语法如下 var name []Tname:表示变量名T表示切片中的元素类型 package mainimport fmtfunc main() {//切片是引用类型不支持直接比较只能和 nil 比较var a []string //声明一个字符串切片fmt.PrintIn(a) //[]fmt.PrintIn(a nil) //truevar b []int{} //声明一个整型切片并初始化fmt.PrintIn(b) //[]fmt.PrintIn(bnil) //falsevar c []bool{false,true}fmt.PrintIn(c) //[false true]fmt.PrintIn(c nil) //false } 切片之间是不能比较的我们不能使用--操作符来判断两个切片是否含有全部相等元素切片唯一合法的比较操作是和 nil 比较。一个 nil 值的切片并没有底层数组一个 nil 值的切片的长度和容量都是 0但是我们不能说一个长度和容量都是 0 的切片一定是 nil 2、关于 nil 的认识 当你声明了一个变量但却还并没有赋值是golang 中自动给你的变量赋值一个默认零值这是每种类型对应的零值 bool-false numbers-0 string- pointers-nil slices-nul maps-nil channels-nil functions-nil interfaces-nil 3、切片的本质 切片的本质就是对底层数组的封装他包含了三个信息底层数组的指针、切片的长度len和切片的容量cap举个例子现在有一个数组 a:[8]int{0,1,2,3,4,5,6,7},切片s1:a[:5],相应示意图如下。 切片s2:a[3:6],相应示意图如下 4、切片的扩容策略 首先判断如果新申请容量cap大于 2 倍的就容量old.cap,最终容量newcap就是新申请的容量cap否则判断,如果旧切片的长度小于 1024则最终容量newcap就是旧容量old.cap的两倍即newcapdoublecap否则判断如果旧切片长度大于等于 1024则最终容量newcap从旧容量old.cap开始循环怎么感觉原来的1/4即newcapold.cap,for{newcap newcap/4}直到最终容量newcap大于等于新申请的容量(cap)即newcap cap如果最终容量cap计算值溢出则最终容量 cap 就是新申请容量cap 5、切片的长度和容量 切片拥有自己的长度和容量我们可以通过使用内置的**len()**函数求长度使用内置的**cap()**函数求切片的容量切片的长度就是它所包含的元素个数切片的容量是从它的第一个元素开始数到其底层数组元素末尾的个数切片 s 的长度和容量可通过表达式 lens和 caps来获取 package mainimport fmtfunc main(){s:[]int{2,3,5,7,11,13}fmt.Printf(长度%v 容量%v\n,len(s),cap(s)) //长度6 容量 6c : s[:2]fmt.PrintIn(c) //[2 3]fmt.Printf(长度%v 容量 %v\n,len(c),cap(c)) //长度 2 容量 6d :s[1:3]fmt.PrintIn(d) //[3 5]fmt.Printf(长度%v 容量%v,len(d),cap(d)) //长度2 容量 5 } 二、切片循环 切片的循环遍历和数组的循环遍历是一样的 1、基本遍历 package mainimport fmtfunc main(){var a []string{北京,上海,深圳}for i:0;ilen(a);i{fmt.PrintIn(a[i])} /* 北京 上海 深圳*/ } 2、kv 遍历 package mainimport fmtfunc main() {var a []string{北京, 上海, 深圳}for index, value : range a {fmt.Println(index, value)} } /* 0 北京 1 上海 2 深圳*/ 三、定义切片 1、数组定义切片 由于切片的底层就是一个数组所以我们可以基于数组定义切片 package mainimport fmtfunc main() {a : [5]int{55,56,57,58,59} //基于数组定义切片b : a[1:4]fmt.PrintIn(b) // [56 57 58]fmt.Printf(type of b:%T\n,b) //type of b:[]intc : b[0:2]fmt.PrintIn(c) //[56 57] } 2、make()构造切片 我们上面都是基于数组来来创建的切片如果需要动态的创建一个切片我们就需要使用内置的make()函数格式如下make([]T,size,cap) T:切片的元素类型size切片中元素的数量cap切片的容量 package mainimport fmtfunc main() {a : make([]int,2,10)fmt.PrintIn(a) //[0 0]fmt.PrintIn(len(a)) // 2fmt.PrintIn(cap(a)) //10 } 在上面代码a的内部存储空间已经分配了10个但实际上只用了2个容量并不会影响当前元素的个数所以len(a)返回2cap(a)则返回该切片的容量 四、append() Go语言的聂键函数append()可以为切片动态添加元素每个切片会指向一个底层数组这个数组的容量够用就添加新增元素当底层数组不能容纳新增的元素时切片就会自动按照一定的策略进行“扩容”此时该切片指向的底层数组就会更换“扩容”操作往往发送在append()函数调用时所以我们通常都需要用原变量接收append()函数的返回值 1、append添加 package mainimport fmtfunc main() {//append()添加元素和切片扩容var numSlice []intfor i :0;i10;i {numSlice append(numSlice,i)fmt.Printf(%v len:%d cap:%d ptr:%p\n,numSlice,len(numSlice),cap(numSlice),numSlice)} } 2、append追加多个 package mainimport fmtfunc main() {var citySlice []stringcitySlice append(citySlice,北京) //追加一个元素citySlice append(citySlice,上海,杭州,深圳) //追加多个元素a : []string{成都,重庆}citySlice append(citySlice,a...) //追加切片fmt.PrintIn(citySlice) //[北京 上海 杭州 深圳 成都 重庆] } 3、切片中删除元素 Go语言中并没有删除切片元素的专用方法我们可以使用切片本身的特性来删除元素 package mainimport fmtfunc main() {a : int{30,31,32,33,34,35,36,37}a append(a[:2],a[3:]...) //要删除索引为2的元素fmt.PrintIn(a) //[30 31 33 34 35 36 37] } 4、切片合并 package mainimport fmtfunc main() {arr1 :[]int{2,7,1}arr2 :[]int{5,9,3}fmt.PrintIn(arr2,arr1)arr1 append(arr1,arr2...)fmt.PrintIn(arr1) //[2 7 1 5 9 3] } 五、copy() 1、引用问题 package mainimport fmtfunc main() {a : []int{1,2,3,4,5}b :afmt.PrintIn(a) //[1 2 3 4 5]fmt.PrintIn(b) //[1 2 3 4 5]b[0] 1000fmt.PrintIn(a) //[1000 2 3 4 5]fmt.Println(b) //[1000 2 3 4 5] } 2、copy()函数 Go语言内建的copy()函数可以迅速地将一个切片的数据复制到另外一个切片空间中copy()函数的使用格式如下copy(destSlice,srcSlice [] T)其中 srcSlice数据来源切片destSlice目标切片 package mainimport fmtfunc main() {a : []int{1,2,3,4,5}c : make([]int,5,5) //[0 0 0 0 0]copy(c,a) //使用copy函数将切片a中的元素复制到切片cfmt.Println(a) //[1 2 3 4 5]fmt.Println(c) //[1 2 3 4 5]c[0] 1000fmt.Println(a) //[1 2 3 4 5]fmt.Println(c) //[1000 2 3 4 5] } 六、sort() 1、正序排序 对于int、float64和string数组或是切片的排序go分别提供了sort.Ints()、sort.Float64s()和sort.Strings()函数默认都是从小到大排序 pacakge mainimport {fmtsort }func main() {intList : []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}sort.Ints(intList)fmt.Println(intList) // [0 1 2 3 4 5 6 7 8 9]stringList : []string{a, c, b, z, x, w, y, d, f, i}sort.Strings(stringList)fmt.Println(stringList) // [a b c d f i w x y z] } 2、sort降序排序 Golang的sort 包 可 以 使 用 sort.Reverse(slice) 来 调 换slice.Interface.Less也就是比较函数所以 int 、 float64 和 string的逆序排序函数可以这么写 package main import (fmtsort ) func main() {intList : []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}sort.Sort(sort.Reverse(sort.IntSlice(intList)))fmt.Println(intList) // [9 8 7 6 5 4 3 2 1 0]stringList : []string{a, c, b, z, x, w, y, d, f, i}sort.Sort(sort.Reverse(sort.StringSlice(stringList)))fmt.Println(stringList) // [z y x w i f d c b a] }
http://www.pierceye.com/news/71082/

相关文章:

  • 聊城做网站的公司精英国外建设网站流程
  • wordpress表格制作怎么优化自己公司的网站
  • 哪种类型的网站比较难做如何看一个网站是否做推广
  • 构建网站系统官网建设银行网站
  • vs2010做网站登陆界面怀仁有做网站的公司吗
  • 网站建设和网络营销足球比赛直播 视频直播
  • 网站qq启动链接怎么做seo软件工具
  • 使用模板怎么建站教育类门户网站
  • 怎么修改wordpress站点代码aspx网站模板
  • ac86u做网站服务器百度公司的业务范围
  • 手机网站怎么做seo全网整合营销推广
  • 重庆网上制作网站新闻静态网站模板
  • 国外客户推广网站广州公关公司排名
  • 手机网站开发怎么样运动类网站
  • 装修 设计 网站微页制作平台网站建设
  • 完整的网站优化放啊wordpress版块
  • 购物网站开发中查看订单的实现逻辑北京引流推广公司
  • 网站友链怎么添加大网站有哪些
  • 网站制作网站建设案例商城网站开发平台
  • 网站开发模式名词网站建设福建
  • 上海大学生兼职做网站wordpress 报表
  • 网站推广的最终目的是什么网站的主要栏目及功能
  • 石铜路网站建设页面设计存在的问题
  • 建设银行网站怎么不可登入wordpress后台账号密码忘记
  • 网站域名被注销重新备案怎么做牧童蝉网站建设
  • 高端企业网站公司手机网站用什么软件做
  • 谁有做任务网站信息流广告的核心是
  • 自己做的网站怎么发布win7搜索引擎关键词怎么选
  • iapp怎么把网站做软件wordpress转为pdf
  • 烟台市芝罘区住房和建设局网站企业年金如何查询