🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] >[success] ## **1:基本介绍** 1)函数内部声明/定义的变量叫局部变量,作用域仅限于函数内部。 2)函数外部声明/定义的变量叫全局变量,作用域在整个包都有效,如果其首字母为大写,则作用域在整个程序有效。 ![](https://img.kancloud.cn/e3/0d/e30d0c9d345e627324deeb2e2742bde1_1053x720.png) 3)如果变量是在一个代码块,比如for/if中, 那么这个变量的的作用域就在该代码块 <br> <br> >[success] ## **练习题** 如下代码,会报错 ![](https://img.kancloud.cn/c7/74/c7742f4d938d7bdafdbd92fa44706ed2_1280x317.png) <br> <br> >[success] ## **函数的练习** 1)在终端输入一个整数,打印出相应的金字塔 ![](https://img.kancloud.cn/6f/12/6f12666016fe35a372b5202e426c4ff2_1002x720.png) 2)打印99惩罚表 ![](https://img.kancloud.cn/d8/fb/d8fb797dca68fc1a5f14b2bfe66ffb91_1280x591.png) ## **2 string常用的函数** 说明:字符串在我们程序开发中,使用的是非常多的,常用的函数需要掌握[带看手册或者官方编程指南]: 1)**统计字符串的长度**, 按字节len(str)-----(len是按照字节遍历,并非按照字符) ![](https://img.kancloud.cn/f2/8e/f28e7c493ae8e27fc4f03d819280228a_1280x331.png) 2)**字符串遍历** 同时处理有中文的问题r:= **[ ]rune(str)**;例如遍历 a:=“hallo北京” ![](https://img.kancloud.cn/0d/be/0dbe996fd95406b647859a737836507e_1193x720.png) 3)**字符串转整数**: n, err := strconv.Atoi("12") ![](https://img.kancloud.cn/3e/b7/3eb7e452359830d0aaa90d61c2945e97_1280x525.png) 4)**整数转字符串** str = strconv.Itoa(12345) ![](https://img.kancloud.cn/3f/2d/3f2de9554d369cd38034ee046deb44ba_1280x309.png) 5)字符 串转`[]byte: var bytes = []byte("hello go")` ![](https://img.kancloud.cn/bf/c6/bfc6e16cb8d1725a6517d0f8a615172b_1280x280.png) 6)[ ]byte 转字符串: `str = string([ ]byte{97, 98, 99})` ![](https://img.kancloud.cn/d0/47/d04727349865403fc5930a8dd56f0783_1280x207.png) 7)10进制转2, 8, 16进制: str = strconv.FormatInt(123, 2)//2->8,16 [strconv](https://studygolang.com/static/pkgdoc/pkg/strconv.htm)**:包** func [FormatInt](#18 "View Source") func FormatInt( i [int64](#int64), base [int](#int)) [string](#string) 返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。 ![](https://img.kancloud.cn/c6/c6/c6c6b87979b9c4da54966a2e944df624_1095x720.png) 8)查找子串是否在指定的字符串中: strings.Contains("seafood", "foo") //true [strings](https://studygolang.com/static/pkgdoc/pkg/strings.htm)**:包** func [Contains](#112 "View Source") func Contains(s, substr [string](#string)) [bool](#bool) 判断字符串s是否包含子串substr。 ![](https://img.kancloud.cn/ec/b9/ecb91fac92126c05035607d3c2a5bcb8_1280x328.png) 9)统计一个字符串有几个指定的子串: strings.Count("ceheese", "e") //4 func [Count](#65 "View Source") func Count(s, sep [string](#string)) [int](#int) 返回字符串s中有几个不重复的sep子串。 ![](https://img.kancloud.cn/75/1f/751fc3591f6a8d8aefd9843a9e0d6391_1280x268.png) 10)不区分大小写的字符串比较(==是区分字母大小写的): func [EqualFold](#674 "View Source") func EqualFold(s, t [string](#string)) [bool](#bool) 判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。 ![](https://img.kancloud.cn/2d/1d/2d1dd68d425361fbc1322b690c410c0f_1280x318.png) 11)返回子串在字符串第一次出现的index值,如果没有返回-1 :strings.Index("NLT_ abc", "abc")//4 func [Index](#127 "View Source") func Index(s, sep [string](#string)) [int](#int) 子串sep在字符串s中第一次出现的位置,不存在则返回-1。 ![](https://img.kancloud.cn/95/d6/95d6a8d50db1d91459e0052a22366294_1280x419.png) 12)返回子串在字符串最后一次出现的index, 如没有返回-1 : strings LastIndex("go golang". "go")(**求字符串最后出现的位置是第几个**) func [LastIndex](#164 "View Source") func LastIndex(s, sep [string](#string)) [int](#int) 子串sep在字符串s中最后一次出现的位置,不存在则返回-1。 ![](https://img.kancloud.cn/a7/f6/a7f6f57f96ddbf7e4d016989d03af2e8_1280x277.png) 13)将指定的子串替换成另外一个子串: strings Replace("go go hello", "go", "go 语言", n)n可以指定你希望替换几个,如果n=-1表示全部替换 func [Replace](#638 "View Source") func Replace(s, old, new [string](#string), n [int](#int)) [string](#string) 返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。 ![](https://img.kancloud.cn/46/6f/466f7059c3046d6af0ccbe70d4d5aff4_1280x305.png) 14)按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:strings.Split("hello,wrold,ok". "") func [Split](#294 "View Source") func Split(s, sep [string](#string)) [ ][string](#string) 用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。 ![](https://img.kancloud.cn/ee/d9/eed93f4ef2179a41d8440803b885b1ab_1280x580.png) 15)将字符串的字母进行大小写的转换: strings ToLower("Go") // go strings.ToUppr("Go") // GO ![](https://img.kancloud.cn/b8/6a/b86aefa3dd97b7e8a177f28d01675f5f_1280x557.png) 16)将字符串左右两边的空格去掉: strings.TrimSpace(" tn a lone gopher ntm ") func [TrimSpace](#613 "View Source") func TrimSpace(s [string](#string)) [string](#string) 返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。 ![](https://img.kancloud.cn/b9/21/b921694e47c7efb3001b946887a3a2bf_1280x227.png) 17)将字符串左右两边指定的字符去掉: strings.Trim("! hello!", " !") // ["hello"] /将左右两边! 和”"去掉 func [Trim](#586 "View Source") func Trim(s [string](#string), cutset [string](#string)) [string](#string) 返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。 ![](https://img.kancloud.cn/0e/62/0e622c56dc24f58490375fbe7cf33189_1280x369.png) 18)将字符串左边指定的字符去掉: strings.TimLeft("! hello!", "!") // ["hello"]//将左边!和" "去掉 func [TrimLeft](#595 "View Source") func TrimLeft(s [string](#string), cutset [string](#string)) [string](#string) 返回将s前端所有cutset包含的utf-8码值都去掉的字符串。 <br> <br> 19)将字符串右边指定的字符去掉: strings.TrimRight("! hello!", "!") // [hello"]将右边! 和" "去掉 func [TrimRight](#604 "View Source") func TrimRight(s [string](#string), cutset [string](#string)) [string](#string) 返回将s后端所有cutset包含的utf-8码值都去掉的字符串。 <br> <br> 20)判断字符串是否以指定的字符串开头: stings .HasPrefix(" fp://192168.10.1". "ftp") //true func [HasPrefix](#371 "View Source") func HasPrefix(s, prefix [string](#string)) [bool](#bool) 判断s是否有前缀字符串prefix。 ![](https://img.kancloud.cn/94/5c/945cb201cd5eac6424504b7de630e1f8_1280x192.png) <br> <br> 21)判断字符串是否以指定的字符串结束: strings HasSuffix("NLT_ abc.jpg"; "abc") /false func [HasSuffix](#376 "View Source") func HasSuffix(s, suffix [string](#string)) [bool](#bool) 判断s是否有后缀字符串suffix。 ![](https://img.kancloud.cn/c1/c8/c1c85dc29542da99b804c677eded6a2a_1280x214.png)