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

网站开发提案模板电子商务网站建设文献

网站开发提案模板,电子商务网站建设文献,如何上传网站程序,淘宝上做的网站可以优化吗1. 数组 数组是一个由固定长度的特定类型元素组成的序列#xff0c;一个数组可以由零个或多个元素组成。因为数组的长度是固定的#xff0c;所以在Go语言中很少直接使用数组 声明语法#xff1a; var 数组变量名 [元素数量]Typepackage main import (fmt ) fu…1. 数组 数组是一个由固定长度的特定类型元素组成的序列一个数组可以由零个或多个元素组成。因为数组的长度是固定的所以在Go语言中很少直接使用数组 声明语法 var 数组变量名 [元素数量]Typepackage main import (fmt ) func main() {var a [3]int // 定义三个整数的数组,仅是定义默认值是填0fmt.Println(a[0]) // 打印第一个元素fmt.Println(a[len(a)-1]) // 打印最后一个元素// 打印索引和元素for i, v : range a {fmt.Printf(%d %d\n, i, v)}for _, v : range a {fmt.Printf(%d\n, v)}var q [...]int{1, 2, 3}var r [3]int{1, 2}fmt.Println(q[1]) // 2fmt.Println(r[2]) // 0k : [...]int{1, 2, 3}v : [...]int{2, 3, 4}//m : [...]int{1, 2, 3, 4}fmt.Println(k v) //false//fmt.Println(k m) //不同类型无法进行比较var teams [3]stringteams[0] helloteams[1] goteams[2] !for i, v : range teams {fmt.Printf(序号: %d 值: %s\n, i, v)} }2. 切片 2.1 定义切片 // 声明字符串切片 var strList []string // 声明整型切片 var numList []int // 声明一个空切片 var numListEmpty []int{} // 输出3个切片 fmt.Println(strList, numList, numListEmpty) // 输出3个切片大小 fmt.Println(len(strList), len(numList), len(numListEmpty)) // 切片判定空的结果 fmt.Println(strList nil) fmt.Println(numList nil) fmt.Println(numListEmpty nil)make构造切片 a : make([]int, 2) b : make([]int, 2, 10) fmt.Println(a, b) fmt.Println(len(a), len(b))2.2 为切片新增元素 package main import fmt var numbers []int func main() {var a []intx : []int{1, 2, 3}a append(a, 1) // 追加1个元素a append(a, 1, 2, 3) // 追加多个元素, 手写解包方式a append(a, x...) // 追加一个切片, 切片需要解包fmt.Println(a)deal()var b []int{1, 2, 3}b append([]int{0}, b...) // 在开头添加1个元素fmt.Println(b)b append([]int{-3, -2, -1}, b...) // 在开头添加1个切片fmt.Println(b) } func deal() {for i : 0; i 10; i {numbers append(numbers, i)fmt.Printf(len: %d cap: %d pointer: %p\n, len(numbers), cap(numbers), numbers)} }2.3 切片复制 copy作用前面的切片元素以小的切片元素为复制对象 package main import fmt func main() {slice1 : []int{1, 2, 3, 4, 5}slice2 : []int{5, 4, 3}copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中fmt.Println(slice1) //[1 2 3 4 5]fmt.Println(slice2) //[1 2 3]slice2 []int{7, 8, 9}copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置fmt.Println(slice1) //[7 8 9 4 5] }package main import fmt func main() {// 设置元素数量为1000const elementCount 1000// 预分配足够多的元素切片srcData : make([]int, elementCount)// 将切片赋值for i : 0; i elementCount; i {srcData[i] i}// 引用切片数据refData : srcData// 预分配足够多的元素切片copyData : make([]int, elementCount)// 将数据复制到新的切片空间中copy(copyData, srcData)// 修改原始数据的第一个元素srcData[0] 999// 打印引用切片的第一个元素fmt.Println(refData[0])// 打印复制切片的第一个和最后一个元素fmt.Println(copyData[0], copyData[elementCount-1])// 复制原始数据从4到6(不包含)copy(copyData, srcData[4:6])for i : 0; i 5; i {fmt.Printf(%d , copyData[i])} }代码说明如下 第 8 行定义元素总量为 1000。第 11 行预分配拥有 1000 个元素的整型切片这个切片将作为原始数据。第 1416 行将 srcData 填充 0999 的整型值。第 19 行将 refData 引用 srcData切片不会因为等号操作进行元素的复制。第 22 行预分配与 srcData 等大大小相等、同类型的切片 copyData。第 24 行使用 copy() 函数将原始数据复制到 copyData 切片空间中。第 27 行修改原始数据的第一个元素为 999。第 30 行引用数据的第一个元素将会发生变化。第 33 行打印复制数据的首位数据由于数据是复制的因此不会发生变化。第 36 行将 srcData 的局部数据复制到 copyData 中。第 3840 行打印复制局部数据后的 copyData 元素。 2.4 切片删除元素 2.4.1 开头元素 特性 a : []int{1, 2, 3} a a[1:] // 删除开头1个元素 a a[N:] // 删除开头N个元素append a []int{1, 2, 3} a append(a[:0], a[1:]...) // 删除开头1个元素 a append(a[:0], a[N:]...) // 删除开头N个元素copy a []int{1, 2, 3} a a[:copy(a, a[1:])] // 删除开头1个元素 a a[:copy(a, a[N:])] // 删除开头N个元素2.4.2 中间删除 a []int{1, 2, 3, ...} a append(a[:i], a[i1:]...) // 删除中间1个元素 a append(a[:i], a[iN:]...) // 删除中间N个元素 a a[:icopy(a[i:], a[i1:])] // 删除中间1个元素 a a[:icopy(a[i:], a[iN:])] // 删除中间N个元素2.4.3 末尾删除 a : []int{1, 2, 3} a a[:len(a)-1] // 删除尾部1个元素 a a[:len(a)-N] // 删除尾部N个元素2.4.4 指定元素删除 package main import fmt func main() {list1 : []int{1, 2, 3, 3, 5, 4}list2 : []int{1, 2, 3, 3, 5, 4}list1 DeleteSlice3(list1, 3)fmt.Println(list1)list3 : DeleteSlice2(list2, 3)fmt.Println(list3) } // DeleteSlice3 位移法 func DeleteSlice3(a []int, elem int) []int {j : 0for _, v : range a {if v ! elem {a[j] vfmt.Println(a)j}}return a[:j] } // DeleteSlice2 拷贝法 func DeleteSlice2(a []int, elem int) []int {tmp : make([]int, 0, len(a))for _, v : range a {if v ! elem {tmp append(tmp, v)}}return tmp }位移法输出 [1 2 3 3 5 4] [1 2 3 3 5 4] [1 2 5 3 5 4] [1 2 5 4 5 4] [1 2 5 4]解析把后面不等于3的元素提前然后根据最后j的长度来返回需要取多长同时把3元素排除拷贝法输出 [1] [1 2] [1 2 5] [1 2 5 4] [1 2 5 4] 解析这个就很好理解了创建一个空的切片值不等就添加进去3. 映射 3.1 map概念 package main import fmt func main() {map1 : make(map[int]int)map1 map[int]int{1: 3, 2: 4}fmt.Println(map1)for i, v : range map1 {fmt.Printf(键是: %d 值是: %d\n, i, v)} }3.2 遍历map package main import fmt func main() {slice1 : make([]int, 0)slice1 append(slice1, 1, 2, 3, 4)map1 : make(map[int]int)for i, v : range slice1 {map1[i] v}fmt.Println(map1) }注明 for i, v : range 可输出键值 如果只需要键 for i : range 如果只需要值 for _, v : range3.3 map转slice排序 package main import (fmtsort ) func main() {scene : make(map[string]int)// 准备map数据scene[route] 66scene[brazil] 4scene[china] 960// 声明一个切片保存map数据var sceneList []string// 将map数据遍历复制到切片中for k : range scene {sceneList append(sceneList, k)}// 对切片进行排序sort.Strings(sceneList) //对字符串进行排序// 输出fmt.Println(sceneList) }3.4 删除map中的元素 package main import (fmt ) func main() {scene : make(map[string]int)// 准备map数据scene[route] 66scene[brazil] 4scene[china] 960delete(scene, brazil)for k, v : range scene {fmt.Println(k, v)} }ps: 使用字典就是用make函数重新创个新的即可其余的交给GC回收机制 3.5 并发环境使用Map sync.Map 有以下特性 无须初始化直接声明即可。sync.Map 不能使用 map 的方式进行取值和设置等操作而是使用 sync.Map 的方法进行调用Store 表示存储Load 表示获取Delete 表示删除。使用 Range 配合一个回调函数进行遍历操作通过回调函数返回内部遍历出来的值Range 参数中回调函数的返回值在需要继续迭代遍历时返回 true终止迭代遍历时返回 false。 代码演示如下 package main import (fmtsync ) func main() {var scene sync.Map// 将键值对保存到sync.Mapscene.Store(greece, 97)scene.Store(london, 100)scene.Store(egypt, 200)// 从sync.Map中根据键取值fmt.Println(scene.Load(london))// 根据键删除对应的键值对scene.Delete(london)// 遍历所有sync.Map中的键值对scene.Range(func(k, v interface{}) bool {fmt.Println(iterate:, k, v)return true}) }代码说明如下 第 10 行声明 scene类型为 sync.Map注意sync.Map 不能使用 make 创建。第 1315 行将一系列键值对保存到 sync.Map 中sync.Map 将键和值以 interface{} 类型进行保存。第 18 行提供一个 sync.Map 的键给 scene.Load() 方法后将查询到键对应的值返回。第 21 行sync.Map 的 Delete 可以使用指定的键将对应的键值对删除。第 24 行Range() 方法可以遍历 sync.Map遍历需要提供一个匿名函数参数为 k、v类型为 interface{}每次 Range() 在遍历一个元素时都会调用这个匿名函数把结果返回。 4. 列表 列表创建与传值 package main import (container/listfmt ) func main() {l : list.New()l.PushFront(hello)l.PushBack(world)element : l.PushBack(wo)l.InsertBefore(baby, element)l.InsertAfter(aiNi, element)l.Remove(element)for i : l.Front(); i ! nil; i i.Next() {fmt.Println(i.Value)} }5. 空值与零值 指针、切片、映射、通道、函数和接口的零值则是 nil 5.1 nil标识符不能比较 package main import (fmt ) func main() {fmt.Println(nilnil) }运行结果: 未定义操作 PS D:\code go run .\main.go #command-line-arguments .\main.go:8:21: invalid operation: nil nil (operator not defined on nil) 5.2 nil不是关键字和保留字 以下编写是可以通过编译的但不推荐这么做 var nil errors.New(my god) 5.3 nil没有默认类型 package main import (fmt ) func main() {fmt.Printf(%T, nil)print(nil) }输出 #command-line-arguments .\main.go:7:8: use of untyped nil in argument to print 5.4 不同类型 nil 的指针是一样的 package main import (fmt ) func main() {var arr []intvar num *intfmt.Printf(%p\n, arr)fmt.Printf(%p, num) }输出 0x0 0x0 Process finished with the exit code 0 5.5 nil是map、slice、pointer、channel、func、interface 的零值 package main import (fmt ) func main() {var m map[int]stringvar ptr *intvar c chan intvar sl []intvar f func()var i interface{}fmt.Printf(%#v\n, m)fmt.Printf(%#v\n, ptr)fmt.Printf(%#v\n, c)fmt.Printf(%#v\n, sl)fmt.Printf(%#v\n, f)fmt.Printf(%#v\n, i) }输出 PS D:\code go run .\main.go map[int]string(nil) (*int)(nil) (chan int)(nil) []int(nil) (func())(nil) 5.6 不同类型的nil值占用的内存大小可能不一样 package main import (fmtunsafe ) func main() {var p *struct{}fmt.Println( unsafe.Sizeof( p ) ) // 8var s []intfmt.Println( unsafe.Sizeof( s ) ) // 24var m map[int]boolfmt.Println( unsafe.Sizeof( m ) ) // 8var c chan stringfmt.Println( unsafe.Sizeof( c ) ) // 8var f func()fmt.Println( unsafe.Sizeof( f ) ) // 8var i interface{}fmt.Println( unsafe.Sizeof( i ) ) // 16 }输出 PS D:\code go run .\main.go 8 24 8 8 8 16
http://www.w-s-a.com/news/55121/

相关文章:

  • 官方查企业的网站办公用品网站建设策划书
  • 微信网站搭建哪家好网站中转页
  • 阿里巴巴网站开发是谁长沙自助模板建站
  • 阿里云网站方案建设书网络公司运营是干啥的
  • 南通seo网站排名优化nginx wordpress rewrite
  • 网站做成软件做内部网站费用
  • 浙江企业网站建设网站域名有了 网站如何建设
  • 学编程哪个机构有权威德州做网站优化
  • 最火的网站开发语言福州网站建设服务商
  • 嘉兴网站制作哪里好asp网站源码免费版
  • 如何给网站配置域名百度网站统计添加网址
  • 搭建wap网站磁力引擎
  • 如何给公司网站做推广个人网站可以做社区吗
  • 网站建设为什么不给源代码大理如何做百度的网站
  • 网站代理违法吗网站备份流程
  • 免费域名查询网站wordpress wordfence
  • h5响应式网站模板制作巴南网站制作
  • 网站方案报价软文什么意思
  • 电子商城网站如何建设上海公司车牌价格
  • 丽江网站设计公司专业公司网站设计企业
  • iis怎么建设网站特色产品推广方案
  • 道路建设网站专题品牌网站建设特色大蝌蚪
  • 网站开发组合 所有组合如何做com的网站
  • 电商网站怎么做的Wordpress 报表的插件
  • 纹理网站推荐买了两台服务器可以做网站吗
  • 机关公文写作网站南宁互联网推广
  • 五指山网站开发价格免费申请网站域名
  • 帝国音乐网站怎么做数据表电脑优化软件
  • 做国外网站收款怎么收建筑人才招聘网站
  • 毕设做桌面端还是网站sns社交网站 建设