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

一般网站建设方案风信子 网站建设

一般网站建设方案,风信子 网站建设,经典包装设计案例解析,深圳公司网站设计哪家好Go语言的容器分为值类型和引用数据类型 一、数组 1.数组的声明和初始化 (1) 数组声明的语法 var 数组变量名 [数组大小]数组类型 举例#xff1a; package main import fmtfunc main(){//数组的声明var arr[10]int//打印数组长度fmt.Println(arr的长度为…Go语言的容器分为值类型和引用数据类型 一、数组 1.数组的声明和初始化 (1) 数组声明的语法 var 数组变量名 [数组大小]数组类型 举例 package main import fmtfunc main(){//数组的声明var arr[10]int//打印数组长度fmt.Println(arr的长度为, len(arr))//数组的赋值for i, _ : range arr{arr[i] i1}fmt.Println(打印数组)//打印数组for j, w : range arr{fmt.Println(j, arr[j], w)}}结果 在数组的定义中若在数组长度的位置出现了…省略号即var 数组变量名[…]数组类型则表示数组的长度是根据初始化值的个数来决定的。 package main import ( fmt ) func main(){arr1 : [...]int{}arr2 : [...]int{1,2,3,4,5,6,7,8,9}fmt.Println(打印arr1)for i, _ : range arr1{fmt.Println(arr1[i])}fmt.Println(打印arr2)for i, _ : range arr2{fmt.Println(arr2[i])}fmt.Printf(arr1的类型为%T\n,arr1)fmt.Printf(arr2的类型为%T\n,arr2) }结果 (2) 比较两个数组是否相等 package mainimport fmtfunc main(){arr1 : [5]int{1,2,3,4,5}arr2 : [...]int{1,2,3,4,5}arr3 : [5]int{0,1,2,3,4}fmt.Printf(arr1arr2?的结果%v\n,arr1 arr2)fmt.Printf(arr1arr3?的结果%v\n,arr1 arr3) }结果 2.多维数组 多维数组的语法var 数组变量名[size1][size2]…[sizen]数组类型 (1) 声明二维数组 package main import fmtfunc main(){var arr1[4][3]int//声明一个多维数组大小为43arr2 : [4][3]int{{0,1,2},{1,2,3},{2,3,4},{3,4,5}}//声明数组并初始化所有元素arr3 : [4][3]int{1:{0,1,2},2:{1,2,3}}//声明并初始化数组中指定索引的元素arr4 : [4][3]int{1:{0:20},2:{2:30}}//声明并初始化数组中指定元素for i,v : range arr1{fmt.Printf(arr1的结果)fmt.Println(v)fmt.Printf(arr2的结果)fmt.Println(arr2[i])fmt.Printf(arr3的结果)fmt.Println(arr3[i])fmt.Printf(arr4的结果)fmt.Println(arr4[i])} }结果 (2) 数组赋值 package mainimport fmtfunc main(){var arr1[2][2]intvar arr2[2][2]intfor i,_ : range arr2{for j, _ : range arr2[i]{arr2[i][j] i 1}}arr1 arr2arr2[0][1] 10arr2[1][1] 20for i,v : range arr1{fmt.Printf(arr1的值为)fmt.Println(v)fmt.Printf(arr2的值为)fmt.Println(arr2[i])} }结果 二、切片 1.切片概述 slice切片就是数组中一段连续的片段的引用。故切片是个引用类型从数组或者切片生成新的切片slice[开始位置 : 结束位置]从数组或者切片中生成新的切片拥有如下特征 1取出的元素数量为结束位置 - 开始位置 2取出的元素不包含结束位置对应的索引左闭右开。切片最后一个元素是slice[len(slice)] 3当缺省开始位置时表示从连续区域开头位置到切片结束位置 4当缺省结束位置时表示从切片开始位置到连续区域末尾位置 5当开始位置和结束位置都缺省时表示从连续区域开头位置到连续区域末尾位置即整个连续区域。即表示原有的切片 6当开始位置和结束位置两者都为0时即空切片。一般用于切片复位切片举例package mainimport fmtfunc main(){arr : [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}fmt.Println(数组arr的值为,arr)fmt.Println(切片arr[0:1]的值为, arr[0:1])fmt.Println(切片arr[2:8]的值为, arr[2:8])fmt.Println(切片arr[4:9]的值为, arr[4:9])fmt.Println(切片arr[5:10]的值为, arr[5:10])fmt.Println(切片arr[5:10]中元素个数为, len(arr[5:10]))fmt.Println(切片最后一个元素arr[len(arr)]的值为,arr[len(arr[4:9])])fmt.Println(切片arr[2:]的值为,arr[2:])fmt.Println(切片arr[:8]的值为,arr[:8])fmt.Println(切片arr[:]的值为,arr[:]) }结果通过结果可以看见是左闭右开的。声明新切片的语法var 切片名[]切片类型package mainimport fmtfunc main() {var strSlice []string //声明字符串切片var intSlice []int //声明整型切片var emptySlice []int{} //声明一个空切片fmt.Println(strSlice, intSlice, emptySlice)fmt.Println(len(strSlice), len(strSlice))fmt.Println(len(intSlice), len(intSlice))fmt.Println(len(emptySlice), len(emptySlice))fmt.Println(strSlice nil ? , strSlice nil)fmt.Println(intSlice nil ? , intSlice nil)fmt.Println(emptySlice nil ? , emptySlice nil) }结果 2.make动态构造切片 若需要动态创建一个切片则可以使用make()内建函数make([]切片类型,切片大小,切片容量)注意使用make()函数生成的切片一定发生了内存分配操作但给定开始与结束位置包括切片复位的切片结果指向已经分配好的区域。设定开始与结束位置不会发生内存分配操作。package main import fmtfunc main() {slice1 : make([]int, 2, 20)//slice1切片的大小为2容量为20slice2 : make([]int, 2)//slice2切片的大小为2//slice1和slice2都是预分配了2个元素的切片只是slice1内部存储空间已经分配了20个但实际只用了2个fmt.Println(slice1:,slice1)fmt.Println(slice2:,slice2)fmt.Println(len(slice1):,len(slice1))fmt.Println(len(slice2):,len(slice2)) }结果 3.在切片中添加元素 切片的len元素个数并不等于切片的cap容量大小cap容量扩容是2倍进行扩容的package mainimport fmtfunc main() {var slice1 []intfor i:0; i20; i{slice1 append(slice1, i)fmt.Printf(len:%d, cap:%d, pointer:%p\n, len(slice1), cap(slice1), slice1)} }结果 4.切片复制copy copy(目标切片, 原切片)package mainimport fmtfunc main() {arr : [10]int{0,1,2,3,4,5,6,7,8,9}slice1 : arr[2:9]slice2 : []int{10,11,12,13}fmt.Println(复制前)fmt.Println(slice1,slice1)fmt.Println(slice2,slice2)cp1 : copy(slice1,slice2)//将slice2的所有元素复制到slice1cp2 : copy(slice2,slice1)//将slice1中前几个元素复制到slice2中fmt.Println(复制后)fmt.Println(slice1,slice1)fmt.Println(slice2,slice2)fmt.Println(cp1复制的总数为:, cp1)fmt.Println(cp2复制的总数为:, cp2) }结果 5.range关键字循环切片 package main import fmtfunc main() {arr : [10]int{0,1,2,3,4,5,6,7,8,9}slice1 : arr[2:9]for i,v:range slice1{fmt.Printf(index:%d, value:%d\n, i, v)} }结果 6.多维切片 声明方法var 切片名 [][]…[]切片类型 package mainimport fmtfunc main() {var slice1 [][]intslice1 [][]int{{0,1},{10,11},{20}}fmt.Println(添加元素前)for i,v:range slice1{fmt.Printf(index:%d, value:%d\n, i, v)}slice1[2] append(slice1[2], 100)//为第三个切片添加值为100的元素fmt.Println(添加元素后)for i,v:range slice1{fmt.Printf(index:%d, value:%d\n, i, v)} }结果 三、数组和切片的区别 数组是数值类型切片是引用类型数组的长度是固定的切片的长度不固定切片是动态的数组数组只有长度的概念切片还有容量cap的概念切片的底层是数组数组之间可以通过比较判断两个数组是否有相同元素但是切片不行只能和nil进行相等判断一个零值的切片等于nil一个nil值的切片并没有底层数组数组传递给函数的时候是需要先拷贝再传递而切片是引用传递函数内可以直接修改切片的内容
http://www.dnsts.com.cn/news/95973.html

相关文章:

  • html5网站开发书籍福州市工程造价信息网
  • wordpress可以做什么站洞泾做网站公司
  • 南阳网站建设大旗电商wordpress 豆瓣电影
  • 网站建设的国内外现状注册新公司的流程
  • 广州工程建设网站网站制作的步骤不包括
  • 做市级网站需要什么意思wordpress授权小程序
  • 临城网站建设wordpress标签云添加图片
  • 百度站长工具怎么推广网站网站建设制作网络营销公司
  • 成都网站建设收费明细自建网站卖东西
  • 网站建设微信商城运营下载jsp网站开发用啥工具
  • 设计得很好的企业网站2017年做网站多少钱
  • 扁平化设计风格的网站微官网和移动网站区别吗
  • 合肥企业建网站seo网站推广收费
  • 建设银行博士后招聘网站做数据收集网站
  • 福州品牌网站设计html5手机网站案例
  • 商丘建设网站花店网站建设构思
  • 广西建设监理协会官方网站自适应h5网页模板
  • title:(网站建设)搜狐最大的门户网站
  • 贵金属网站建设合肥做网站专家
  • 东莞市公司网站建设服务机构怎么做一个网站多少钱
  • 公司网站html模板有赞小程序开发平台
  • 专业的外贸行业网站设计家里装修
  • 检察院门户网站建设成效网站免费正能量入口
  • 熊撑号怎么做网站推广专注合肥网站推广
  • 有哪些看设计做品的网站注册安全工程师考试
  • wordpress产品页面在哪改齐三seo
  • 网站建设 自适应网站开发常见面试题
  • 网站建设招聘岗位ps做 网站标准尺寸是多少合适
  • 淘宝做链接的网站公众号小程序二维码怎么生成
  • wordpress中英文网站电商公司运营策略