Go_slice与string

TOC

string 和 slice

  • string底层是一个byte类型,可以进行切片
package main
import "fmt"
func main(){
	var str string
	str = "hello@atguigu"
	slice := str[6:]
	fmt.Println(slice)
}
//输出:atguigu
  • string和切片在内存的形式
    内存形式

  • string是不可变的,不能通过str[0]='t’能修改字符串

  • 若需要修改字符串,可先将string转换成[]byte或者[]rune,再修改,最后重写转换成string

package main
import "fmt"
func main(){
	var str string
	str = "hello@atguigu"
	//把"hello@atguigu"改成"zello@atguigu"
	arr1 := []byte(str)
	arr1[0] = 'z'
	str = string(arr1)
	fmt.Println("str=", str)
}
//转换成[]byte后,可以处理英文和数字,但是不能处理中文

//原因是:[]byte 按字节处理,而一个汉字是3个字节

//解决方法:将 string 转成[]rune即可,因为[]rune是按字符处理,兼容汉字
package main
import "fmt"
func main(){
	var str string
	str = "hello@atguigu"
	//把"hello@atguigu"改成"zello@atguigu"
	arr1 := []rune(str)
	arr1[0] = '花'
	str = string(arr1)
	fmt.Println("str=", str)
}
//输出:str= 花ello@atguigu

切片练习

  • 编写一个函数fbn(n int),要求完成
    • 可以接收一个 n int
    • 能够将斐波那契的数列放到切片中
    • 提示:斐波那契的数列形式:arr[0]=1; arr[1]=1; arr[2]=2;arr[3]=3;arr[4]=5;arr[5]=8
package main

import "fmt"

func fbn(n int) []uint64 {
	fbnslice := make([]uint64, n)
	fbnslice[0] = 0
	fbnslice[1] = 1
	for i := 2; i < n; i++ {
		fbnslice[i] = fbnslice[i-2] + fbnslice[i-1]
	}
	return fbnslice

}

func main() {

	/*  思路:
	1.声明一个函数 fbn(n int) ([]uint64){}
	2.编程fbn(n int)进行for循环来存放斐波那契的数列
	*/
	fbnSlice := fbn(10)
	fmt.Println(fbnSlice)

}

//输出:[0 1 1 2 3 5 8 13 21 34]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值