2022-4-22 实习Day20 1、新贸金账户行关联表信息配置 –3小时 80% 2、新贸金系统汇出汇款业务手动测试。–3小时 80%
Golang编程学习(part 16) 1、函数参数的传递方式 ① 值传递:基本数据类型 int系列、float系列、bool、string、数组、结构体struct ② 引用传递:指针、slice切片、map、管道chan、interface等都是引用类型 其实,不管是值传递还是引用传递,传递的都是变量的副本,不同的是,值传递的是值的拷贝,引用传递的是地址的拷贝,一般来说地址拷贝效率高,因为数据量小,而值拷贝效率决定拷贝的数据大小,数据越大,效率越低 2、变量作用域 ① 函数内部声明/定义的变量叫局部变量,作用域仅限于函数内部 ② 函数外部声明/定义的变量叫做全局变量,作用域在整个包都有效,如果首字母为大写,则作用域在整个程序有效 ③ 如果变量是在一个代码块,比如for/if中,那么这个变量的作用域就在该代码块 1 2 3 4 5 6 7 8 var Age int = 20 Name := "tom" func main () { fmt.Println("name" ,Name) } 第二行会报错:因为 Name := "tom" 等价 var Name string Name = "tom" 赋值语句不能在函数体外,所以错
3、字符串常用的系统函数 ① 统计字符串长度,按字节 len(str) 1 2 3 4 5 6 7 8 9 10 11 12 package mainimport ( "fmt" ) func main () { str := "hello,Golang" str1 := "hello,Go语言" fmt.Println(len (str)) fmt.Println(len (str1)) }
② 字符串遍历,同时处理有中文的问题 r:=[]rune(str) 1 2 3 4 5 6 7 8 9 10 11 12 13 package mainimport ( "fmt" ) func main () { str := "Golang,协程真牛批" r := []rune (str) for i := 0 ; i < len (r); i++ { fmt.Printf("%c\n" , r[i]) } fmt.Println(len (r)) }
③ 字符串转整数:n , err := strconv.Atoi(“12”),这边的字符串只能是数字,不然报错 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package mainimport ( "fmt" "strconv" ) func main () { n, err := strconv.Atoi("18" ) if err != nil { fmt.Println("转换错误" , err) } else { fmt.Println("转换的结果是" , n) } }
④ 整数转字符串 str := strconv.Itoa(1234) 1 2 3 4 5 6 7 8 9 package mainimport ( "fmt" "strconv" ) func main () { str := strconv.Itoa(1234 ) fmt.Printf("str=%v,strType=%T" , str, str) }
⑤ 字符串转 []byte: var bytes=[]byte(“hello go”) 1 2 var bytes = []byte ("hello go" )fmt.Printf("bytes=%v\n" ,bytes)
⑥ []byte转字符串:str=string([]byte{97,98,99}) 1 2 str := string ([]byte {97 ,98 ,99 }) fmt.Printf("str=%v\n" ,str)
1 2 3 4 str := strconv.FormatInt( 123 , 2 ) fmt.Printf("123对应的二进制就是=%v\n" ,str) str = strconv.FormatInt( 123 , 16 ) fmt.Printf("123对应的16进制是=%v\n" ,str)
⑧ 查找子串是否在指定的字符串中:strings.Contains(“seafood”,”foo”) 1 2 b := strings.Contains("seafood" , "mary" ) fmt.Println(b)
⑨ 统计一个字符串有几个指定的子串:strings.Count(“cheese”,”e”) 1 2 num := strings.Count("cheese" ,"e" ) fmt.Printf("num=%v\n" ,num)
⑩ 不区分大小写的字符串比较(==是区分大小写的比较):fmt.Println(strings.EqualFold(“abc”,”Abc”)) 1 2 3 b := strings.EqualFold("abc" , "Abc" ) fmt.Printf("b=%v\n" , b) fmt.Println("结果" , "abc" == "Abc" )
①① 返回子串在字符串第一次出现的index值,如果没有返回-1:strings.Index(“NLT_abc”,”abc”) //4 1 2 index := strings.Index("NLT_abcabcabc" , "abc" ) fmt.Printf("index=%v\n" , index)
①② 返回子串在字符串最后一次出现的index,如果没有返回-1: 1 2 index := strings.LastIndex("go golang" , "go" ) fmt.Printf("index=%v\n" , index)
①③ 将指定的字串替换成另外一个字串:strings.Replace(“go go hello”,”go”,”go语言”,n) n可以指你希望替换几个,如果n=-1表示全部替换 1 2 3 4 5 str := "go go hello" str1 := strings.Replace(str, "go" , "北京" , -1 ) fmt.Printf("str=%v\nstr1=%v\n" , str, str1)
①④ 按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:strings.Split(“hello,world,ok”, “,”) 1 2 3 4 5 6 7 8 9 10 strArr := strings.Split("hello,world,ok" , "," ) for i := 0 ; i < len (strArr); i++ { fmt.Printf("str[%v]=%v\n" , i, strArr[i]) } fmt.Printf("strArr=%v\n" , strArr) str[0 ]=hello str[1 ]=world str[2 ]=ok strArr=[hello world ok]
①⑤ 将字符串的字母进行大小写的转换:strings.ToLower(“Go”) //go strings.ToUpper(“Go”) //GO 1 2 3 4 5 str := "goLang Hello" str = strings.ToLower(str) fmt.Println(str) str = strings.ToUpper(str) fmt.Println(str)
①⑥ 将字符串左右两边的空格去掉:strings.TrimSpace(“ tn a long gopher ntrn “) 1 2 str := strings.TrimSpace(" tn a long gopher ntrn " ) fmt.Println(str)
①⑦ 将字符串左右两边指定的字符去掉:strings.Trim(“! hello !”,”!”) //[“hello”],将左右两边!和” “去掉 1 2 str := strings.Trim("! hello! " , " !" ) fmt.Printf("str=%q\n" , str)
①⑧ 将字符串左边指定的字符去掉:strings.TrimLeft(“! hello! “,” !”)//[“hello! “]将左边!和” “去掉 ①⑨ 将字符串右边指定的字符去掉:strings.TrimRight(“! hello! “,” !”)//[“! hello”]将右边!和” “去掉 ②① 判断字符串是否以指定的字符串结束:strings.HasSuffix(“NLT_abc.jpg”,”abc”) //false