2022-4-28 实习Day26
1、汇款业务-汇出汇款测试文档编写完毕 –3小时 100%
2、汇款业务-行内汇款业务手动测试。–2小时 100%
3、bugFix4-27测试问题全部检验测试解决。–2小时 90%
Golang编程学习(part 21)
1、string和slice的相关解释
① string底层是一个byte数组, 因此string也可以进行切片处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main import "fmt" func main() { str := "hello@atguigu"
slice := str[6:] fmt.Println("slice=", slice) fmt.Printf("%T", slice) }
slice= atguigu string
|
② string和切片在内存的形式, 以”abcd”画出内存示意图
1 2 3 4 5 6 7 8
| str --> [ 0x0010 | 4 ] string | \|/ [ a | b | c | d ] [4]byte /|\ | slice = str[1,3] -->[ 0x0014 | 2 ] ptr len
|
③ string是不可变的, 也就是说不能通过 str[0] = ‘z’ 的方式来修改字符串
④ 如果需要修改字符串, 可以先将 string ——> []byte 或者 []rune ——> 修改 ——> 重写转成 string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package main import "fmt" func main() {
str := "sdlsfn" fmt.Println(&str) arr := []byte(str) arr[0] = 'z' fmt.Println(&arr[0]) t := string(arr) fmt.Println(&t) str1 := "go语言真不错" arr1 := []rune(str) arr1[0] = '北' str1 := string(arr1) fmt.Println("str=", str) str1 := "go语言真不错" arr1 := []rune(str1) arr1[0] = '北' str2 := string(arr1) fmt.Println("str=", str1) fmt.Println("str=", str2) } 0xc000088220 0xc0000aa058 0xc000088230
str= go语言真不错 str= 北o语言真不错
|
2、切片的练习题
说明:编写一个函数 fbn(n int) ,要求完成
可以接收一个 n int
能够将斐波那契的数列放到切片中
提示, 斐波那契的数列形式:
arr[0] = 1; arr[1] = 1; arr[2]=2; arr[3] = 3; arr[4]=5; arr[5]=8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package main import "fmt" func main() { fbn(10) }
func fbn(n int) { var ints []int this, pre := 0, 0 for i := 0; i <= n; i++ { if i == 0 { ints, this = append(ints, 1), 1 } else if i == 1 { ints, pre, this = append(ints, 1), 1, 1 } else { pre, this = this, pre+this ints = append(ints, this) } } fmt.Println(ints) }
[1 1 2 3 5 8 13 21 34 55 89]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| func fbn(n int) ([]uint64) { fbnSlice := make([]uint64, n) fbnSlice[0] = 1 fbnSlice[1] = 1 for i := 2; i < n; i++ { fbnSlice[i] = fbnSlice[i - 1] + fbnSlice[i - 2] } return fbnSlice }
|