go数组与切片,[]byte转string[通俗易懂]

go数组与切片,[]byte转string[通俗易懂]数组:同一种数据类型的固定长度序列数组的定义:vara[len]int,比如vara[5]int长度是数组类型的一部分,因此,vara[5]int和vara[10]int是不同的类型funcArray(){ //数组的初始化 varage0[5]int=[5]int{1,2,3} varage1=[5]int{1,2,3,4,5} vara…

大家好,又见面了,我是你们的朋友全栈君。

数组:同一种数据类型的固定长度序列
数组的定义:var a [len]int ,比如 var a[5]int
长度是数组类型的一部分,因此,var a [5]int 和 var a [10]int 是不同的类型

func Array() {
	//数组的初始化
	var age0 [5]int = [5]int{1,2,3}
	var age1 = [5]int{1,2,3,4,5}
	var age2 = [...]int{1,2,3,4,5,6}
	var str = [5]string{3:"hello world",4:"john"} //指定数组的第三个和第四个元素
	fmt.Println(age0)
	fmt.Println(age1)
	fmt.Println(age2)
	fmt.Println(str)
}
func DemiArray() {
	//多维数组  定义一个三行四列的二维数组
	var  a [3][4]int = [...][4]int{
  
  {1,2,3,4},{5,6,7,8},{9,10,11,12}}
	for _,v:= range a{
		for _,v1 := range v{
			fmt.Printf("%d\t",v1)
		}
		fmt.Printf("\n")
	}
}
func main() {
	 Array()
	 DemiArray()
}

切片:切片是数组的一个引用,因此切片是引用类型的
切片的长度是可变的,因此切片是一个可变的数组
切片的遍历方式和数组一样,可以用len()求长度
cap可以求出slice的最大容量,0 <= len(slice) <= cap(array),其中array是slice引用的数组
切片的定义:var 变量名 []类型,比如 var str []string var arr []int

func silce() {
	//定义一个数组从数组里切出切片
	var a = [10]int{1,2,3,4}
	b := a[1:5]
	fmt.Println(b)
	//定义切片,并用make函数初始
	var s = []int
	s = make([]int,5)
	s[0] = 1
	fmt.Println(s)
	//一个切片加另一个切片
	var c = []int{1,2,3}
	var d = []int{4,5,6,7}
	c = append(c,d...) //切片append切片
	fmt.Println(c)
	//切片的拷贝,内置函数copy
	s1 :=[]int{1,2,3,4,5}
	s2 := make([]int,10)
	copy(s2,s1)
	fmt.Printf("s2:%d\n",s2)
}

[]byte 互转string
s1 := “hello,word”
s2 :=[]byte(s1) //string转[]byte
s1 = string(s2) //[]byte转string

func modifystring () {
	//slice与string的关系
	/*string本身是不可变的,因此要改变string中的字符串,需要如下操作*/
	str := "hello world"
	s := []byte(str)
	s[0] = '0'
	str = string(s)
	fmt.Println(str)
	//但是字符串如果是中文转换成byte类型的数组就出错了,应该用
	s1 := "我爱你,中国"
	s2 := []rune(s1)
	s2[0] = '你'
	s1 = string(s2)
	fmt.Println(s1)
}

用slice非递归实现斐波那契数列

func fibo(n int){
	//用slice非递归的实现Fibonacci数列
	var a [] int64
	a = make([]int64,n)
	a[0] = 1
	a[1] = 1
	for i := 2; i < n; i++{
		a[i] = a[i-1] +a[i-2]
	} 
	for _,v := range a{
		fmt.Println(v,)
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150608.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DNS递归和迭代查询[通俗易懂]

    DNS递归和迭代查询[通俗易懂]转自:https://www.jianshu.com/p/6b502d0f2ede一、DNS解析分类DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代二、DNS递归解析原理递归解析(或叫递归查询)是最常见,也是默…

    2022年6月6日
    157
  • 为什么机器学习中常常假设数据是独立同分布的?

    为什么机器学习中常常假设数据是独立同分布的?

    2021年11月19日
    64
  • C语言学习——位运算

    C语言学习——位运算原码反码补码介绍原码 就是前面所介绍的二进制定点表示法,即最高位为符号位,“ 0 ”表示正,“ 1 ”表示负,其余位表示数值的大小。反码 表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码 表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加 1 。补码详细介绍补码是为了表示一个负数的二进制形式。其转化方式是,先将负数当成正数,转化成二进制…

    2022年8月18日
    5
  • カード名義_acm题

    カード名義_acm题原题链接给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。输入格式输入第一行包括一个整数 表示节点个数;接下来 n 行每行一对整数 a 和 b,表示 a 和 b 之间有一条无向边。如果 b 是 −1,那么 a 就是树的根;第 n+2 行是一个整数 m 表示询问个数;接下来 m 行,每行两个不同的正整数 x 和 y,表示一个询问。输出格式对于每一个询问,若 x 是 y 的祖先则输

    2022年8月8日
    7
  • 使用XLSTransformer生成报表的步骤和流程[通俗易懂]

    使用XLSTransformer生成报表的步骤和流程[通俗易懂]使用XLSTransformer生成报表的步骤和流程:1,查询数据库记录,获得需要导出到execl中的数据;2,把数据封装到List中; 通常我们是这样做的:Listbusiness=newArrayListObject>();3,将List放到HashMap中;通常我们是这样做的:Mapbeans=newHashMap();busine

    2022年7月24日
    21
  • 富文本编辑器kindeditor配置

    富文本编辑器kindeditor配置<!–富文本编辑器kindeditor配置↓–><linktype=”text/css”rel=”stylesheet”href=”kindeditor/themes/default/default.css”/><linkrel=”stylesheet”href=”kindeditor/plugins/code/prettify.cs…

    2022年10月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号