• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

GO语言的进阶之路-Golang字符串处理以及文件操作

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

                   GO语言的进阶之路-Golang字符串处理以及文件操作

                                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

  我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也是有过之而无不及,甚至可以说远远的甩python几条街。学过python基础或是shell的童鞋应该知道我们在定义一个变量的时候是不需要指定其所属数据类型的,直接让其等于一个变量即可,他们的解释器会自动识别你定义的是个整数,浮点数,字符串,还是数组或是函数。而Golang在定义每个变量的时候都被指定了数据类型,如果你给这个变量定义的是数字类型,你把它的指针指向字符串的话就会报错!接下来,让我们先看看,整数,常量,字符串,运算符等基础的数据类型吧,本文还会介绍Golang的循环控制以及文件处理等常用的操作。

   当然我这里只是介绍了Golang的冰山一角,对Golang感兴趣的小伙伴,可以看一下Golang官网的文档说明。毕竟官方才是最权威的,给出国内地址:https://golang.org/pkg/

 

一.整数

1.int与uint的初值比较以及其大小。

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# more myint.go
10 package main
11 
12 import (
13         "fmt"
14         "unsafe"
15 )
16 
17 func main()  {
18         var  (
19                 a int //包括所有的整数
20                 b int8 //取值个数2^8,取之范围(-128)-(127)
21                 c int16
22                 d int32 //取值个数:2^32,取值范围:(-2^16)-(2^16-1)
23                 e int64
24                 x uint  //其中这个"u",即:unsigned。表示无符号,即只能表示0和所有的正整数。
25                 y uint8
26                 z uint16
27                 p uint32 //取之个数:2^32,取之范围0-2^32-1
28                 q uint64
29         )
30         fmt.Println("A=",a,"size=",unsafe.Sizeof(a))
31         fmt.Println("B=",b,"size=",unsafe.Sizeof(b))
32         fmt.Println("C=",c,"size=",unsafe.Sizeof(c))
33         fmt.Println("D=",d,"size=",unsafe.Sizeof(d))
34         fmt.Println("E=",e,"size=",unsafe.Sizeof(e))
35         fmt.Println("X=",x,"size=",unsafe.Sizeof(x))
36         fmt.Println("Y=",y,"size=",unsafe.Sizeof(y))
37         fmt.Println("Z=",z,"size=",unsafe.Sizeof(z))
38         fmt.Println("P=",p,"size=",unsafe.Sizeof(p))
39         fmt.Println("Q=",q,"size=",unsafe.Sizeof(q))
40 }
41 
42 [root@yinzhengjie day3]#
43 [root@yinzhengjie day3]# go run myint.go 
44 A= 0 size= 8
45 B= 0 size= 1
46 C= 0 size= 2
47 D= 0 size= 4
48 E= 0 size= 8
49 X= 0 size= 8
50 Y= 0 size= 1
51 Z= 0 size= 2
52 P= 0 size= 4
53 Q= 0 size= 8
54 [root@yinzhengjie day3]# 
55 
56 '''

 2.常量(关键字:const )的定义

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 package main
 9 
10 import (
11     "fmt"
12 )
13 
14 const (  //"const"关键字是定义一个常量。
15     PI = 3.1415926
16     E = 2.0
17     g = 9.8
18 )
19 
20 const  (
21     RED = 10 * iota //"iota"关键字帮你自动从0,1,2......依次开始递增
22     GREEN
23     BLUE
24 )
25 
26 func main()  {
27     fmt.Println(RED,GREEN,BLUE)
28     var (
29         n int
30         f float32
31         f_1 float32
32     )
33     n = 10
34     f = float32(n) / 3 //"n=10"属于“int”类型,int是整数类型,float32是浮点数类型,两者必须转换成一致的,不然会报错。因为Golang是强类型语言。这也是它的特点之一。
35     fmt.Println(f,n)
36     f_1 = float32(n / 3)  //"n / 3"的结果是"3",因为int的类型是个整数,所以被整数三除了之后应该还是整数。
37     fmt.Println(f_1)
38     fmt.Println(f_1 * 3)
39     n = int(f_1 * 3) //同左不同右,我们可以把右边的float32类型转换成int类型
40     fmt.Println(n)
41     var  (
42         n1 int64
43         n2 int8
44     )
45     n1 = 2222222221024004
46     n2 = int8(n1) //要注意的是int8的取值范围是[-128到127],总共255个数字。它会从这个数组的从右往左取数字,最多也就占3位,尽管你前面有再多的数字对其都是无用的。
47     fmt.Println(n1,n2)
48 
49     n1 = 1024129
50     n2 = int8(n1) //看完上面的例子你也,你也应该明白了,在其取值范围是会取得这个数字,如果不在的话渠道的数字也是有问题的!(数字128已经超出其正数的取值范围,它又从-128到0这个段开始取值。)因此在转换的时候要留心哟。
51     fmt.Println(n1,n2)
52 }
53 
54 
55 #以上代码输出结果如下:
56 0 10 20
57 3.3333333 10
58 3
59 9
60 9
61 2222222221024004 4
62 1024129 -127

3.关于int的取值范围扩充。

4.将数字转换成字符串

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 package main
 9 
10 import (
11     "fmt"
12     "strconv"
13     "reflect"
14 )
15 
16 
17 func main()  {
18 
19     var (
20         s string
21         x = 100
22     )
23     s = strconv.Itoa(x) //将一个整数转换成字符串的方法
24     fmt.Println("转换前的类型",reflect.TypeOf(x))
25     fmt.Println("我是转换后的字符串:",s)
26     fmt.Println("转换后的类型",reflect.TypeOf(s))
27 
28 }
29 
30 
31 #以上代码输出结果如下:
32 转换前的类型 int
33 我是转换后的字符串: 100
34 转换后的类型 string

 5.生成随机字符串案例

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 //世界上只有10种人,一种是懂二进制,一种是不懂二进制。
 9 package main
10 
11 import (
12     "math/rand"
13     "time"
14     "strconv"
15     "fmt"
16 )
17 
18 var  x int64
19 var  s string
20 
21 func main()  {
22     rand.Seed(time.Now().Unix())
23     x = rand.Int63()
24     s = strconv.FormatInt(x,36) //表示用36进制来计算x的值。
25     fmt.Println(s) //我们可以在这里对字符串做切片操作,这样就可以随机获取到我们想要到字符了。
26 }
27 
28 
29 
30 #以上代码直接结果如下:
31 p7d8bbl6rjy4

 

二.字符串

1.字符串花式定义玩法以及注释操作

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# more str_note.go 
10 package main
11 
12 import (
13         "fmt"
14 )
15 
16 func main()  {
17         str1 := "yinzhengjie\thave a apple!" //"\t"表示制表符,会根据操作系统自动空出几个空格。
18         doc :=`  //定义多行注释
19 111
20         222
21         3333
22         `
23         x := "hello\\world" //转移用"/"
24         y := "您好,尹正杰!\a" //在终端执行电脑会响.在IDE上执行可能不会有声音哟!
25         z := "####1\b2222" //"\b"表示退格键,会把"\b"前面的一个字符给删除掉,即打印的时候会删除数字"1"
26         fmt.Println(str1)
27         fmt.Println(doc)
28         fmt.Println(x)
29         fmt.Println(y)
30         fmt.Println(z)
31 }
32 
33 //本行是单行注释,下面到结尾是多行注释。
34 /*
35 I have a pen
36 I have an apple
37 I have a pen and i have an apple!
38 */
39 
40 [root@yinzhengjie day3]# 
41 [root@yinzhengjie day3]# go run str_note.go  //如果你是在终端执行的话,或者windows用crt远程linux服务器,每次执行该脚本的时候都会出现系统提示音,前提是你的声卡要正常!
42 yinzhengjie     have a apple!
43   //定义多行注释
44 111
45         222
46         3333
47 
48 hello\world
49 您好,尹正杰!
50 ####2222
51 [root@yinzhengjie day3]# 
52 
53 '''

2.字符串操作

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# more str_manipulation.go 
10 package main
11 
12 
13 
14 /*
15 字符串修改:
16 1.单引号是字符,双引号是字符串;
17 2.字符串本身不可以修改;
18 3.通过跟"[]byte"数组相互转换来修改;
19 */
20 
21 import (
22         "fmt"
23 )
24 
25 func main()  {
26         str1 := "yinzhengjie" + "world" //拼接
27         fmt.Println(str1)
28 
29         var  str2 byte  //1个字节(byte)=8个比特位(bits),因此byte = uint8
30         str2 = str1[0] //取字符
31         fmt.Println(str2)
32         fmt.Printf("数字:%d 字符:%c\n",str2,str2) //表示字符"y"在ASCII表中对应的数字。printf不会换行但是prin
33 tln会自动换行。
34 
35         str3 := str1[0:11] //切片,顾左不顾右,取0-10共11个字符,不会去知道第12个字符,即不会取到下标为11第字符
36 "w"
37         fmt.Println(str3)
38 
39         str4 := str1[11:len(str1)]
40         fmt.Println(str4)
41 
42         var b uint8 //我们这里也可以把unit8写成byte,其实是等效的。
43         for b = 0;b < 177 ;b++  {
44                 fmt.Printf("%d %c\n",b,b)
45         }
46         array := []byte(str1) //将字符串转换成byte数组,可以理解成为python中的list.
47         fmt.Println(array)
48         array[0] = 72 //也可以写字符'H',在ASCII中他们是一一对应的
49         str1 = string(array)
50         fmt.Println(str1)
51 
52         fmt.Println('a' + ('H' - 'h')) //其实就是这些字符在ASCII中的数字相加减,得到的数字为65。
53         fmt.Println(0xa) //表示16进制数字a在ASCII所对应的数字
54 
55 
56 }
57 [root@yinzhengjie day3]# 
58 
59 '''

3.判断变量的数据类型

/*
#!/usr/bin/env gorun
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
EMAIL:[email protected]
*/

package main

import (
    "fmt"
    "reflect"
)

func main()  {
    str1 := "yinzhengjie" + " hello"
    fmt.Println(reflect.TypeOf(str1))  //判断变量“str1”的数据类型
    fmt.Println(str1)
    var   str2 byte
    str2 = str1[0] //让str2=字母"y"在ASCII编码中所对应的数字"121"(我说的说的是十进制的哟)
    fmt.Println(str2)
    fmt.Println(reflect.TypeOf(str2))  //判断变量"str2"的数据类型
}


/*
string
yinzhengjie hello
121
uint8

*/

 

4.提升逼格的linux命令

  这个知识点大家可以不看,如果对linux不感兴趣的话,可以直接跳过,直接看下面的小试牛刀。如果你看到了一堆“10”你会想到是什么呢?在不眼里可能就是一个数字“10”,但是在一些程序员或者说在黑客眼里,这个“10”是2个数字,即“1”和“0”,是二进制的两个数字。在unix操作系统中,包括所有的Linux发现版本和mac都是可以用一个命令来查看文件内容的,他能把文件中的内容翻译成“1001010”类似这种的代码,也是一些开发人员的装逼利器:“xxd”,如果用这个命令呢?展示方法如下:

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# xxd str_manipulation.go 
10 0000000: 7061 636b 6167 6520 6d61 696e 0a0a 0a0a  package main....
11 0000010: 2f2a 0ae5 ad97 e7ac a6e4 b8b2 e4bf aee6  /*..............
12 0000020: 94b9 efbc 9a0a 312e e58d 95e5 bc95 e58f  ......1.........
13 0000030: b7e6 98af e5ad 97e7 aca6 efbc 8ce5 8f8c  ................
14 0000040: e5bc 95e5 8fb7 e698 afe5 ad97 e7ac a6e4  ................
15 0000050: b8b2 efbc 9b0a 322e e5ad 97e7 aca6 e4b8  ......2.........
16 0000060: b2e6 9cac e8ba abe4 b88d e58f afe4 bba5  ................
17 0000070: e4bf aee6 94b9 efbc 9b0a 332e e980 9ae8  ..........3.....
18 0000080: bf87 e8b7 9f22 5b5d 6279 7465 22e6 95b0  ....."[]byte"...
19 0000090: e7bb 84e7 9bb8 e4ba 92e8 bdac e68d a2e6  ................
20 00000a0: 9da5 e4bf aee6 94b9 efbc 9b0a 2a2f 0a0a  ............*/..
21 00000b0: 696d 706f 7274 2028 0a09 2266 6d74 220a  import (.."fmt".
22 00000c0: 290a 0a66 756e 6320 6d61 696e 2829 2020  )..func main()  
23 00000d0: 7b0a 0973 7472 3120 3a3d 2022 7969 6e7a  {..str1 := "yinz
24 00000e0: 6865 6e67 6a69 6522 202b 2022 776f 726c  hengjie" + "worl
25 00000f0: 6422 202f 2fe6 8bbc e68e a50a 0966 6d74  d" //........fmt
26 0000100: 2e50 7269 6e74 6c6e 2873 7472 3129 0a0a  .Println(str1)..
27 0000110: 0976 6172 2020 7374 7232 2062 7974 6520  .var  str2 byte 
28 0000120: 202f 2f31 e4b8 aae5 ad97 e88a 82ef bc88   //1............
29 0000130: 6279 7465 efbc 893d 38e4 b8aa e6af 94e7  byte...=8.......
30 0000140: 89b9 e4bd 8def bc88 6269 7473 efbc 89ef  ........bits....
31 0000150: bc8c e59b a0e6 ada4 6279 7465 203d 2075  ........byte = u
32 0000160: 696e 7438 0a09 7374 7232 203d 2073 7472  int8..str2 = str
33 0000170: 315b 305d 202f 2fe5 8f96 e5ad 97e7 aca6  1[0] //.........
34 0000180: 0a09 666d 742e 5072 696e 746c 6e28 7374  ..fmt.Println(st
35 0000190: 7232 290a 0966 6d74 2e50 7269 6e74 6628  r2)..fmt.Printf(
36 00001a0: 22e6 95b0 e5ad 97ef bc9a 2564 20e5 ad97  ".........%d ...
37 00001b0: e7ac a6ef bc9a 2563 5c6e 222c 7374 7232  ......%c\n",str2
38 00001c0: 2c73 7472 3229 202f 2fe8 a1a8 e7a4 bae5  ,str2) //.......
39 00001d0: ad97 e7ac a622 7922 e59c a841 5343 4949  ....."y"...ASCII
40 00001e0: e8a1 a8e4 b8ad e5af b9e5 ba94 e79a 84e6  ................
41 00001f0: 95b0 e5ad 97e3 8082 7072 696e 7466 e4b8  ........printf..
42 0000200: 8de4 bc9a e68d a2e8 a18c e4bd 86e6 98af  ................
43 0000210: 7072 696e 746c 6ee4 bc9a e887 aae5 8aa8  println.........
44 0000220: e68d a2e8 a18c e380 820a 0a09 7374 7233  ............str3
45 0000230: 203a 3d20 7374 7231 5b30 3a31 315d 202f   := str1[0:11] /
46 0000240: 2fe5 8887 e789 872c e9a1 bee5 b7a6 e4b8  /......,........
47 0000250: 8de9 a1be e58f b3ef bc8c e58f 9630 2d31  .............0-1
48 0000260: 30e5 85b1 3131 e4b8 aae5 ad97 e7ac a6ef  0...11..........
49 0000270: bc8c e4b8 8de4 bc9a e58e bbe7 9fa5 e981  ................
50 0000280: 93e7 acac 3132 e4b8 aae5 ad97 e7ac a6ef  ....12..........
51 0000290: bc8c e58d b3e4 b88d e4bc 9ae5 8f96 e588  ................
52 00002a0: b0e4 b88b e6a0 87e4 b8ba 3131 e7ac ace5  ..........11....
53 00002b0: ad97 e7ac a622 7722 0a09 666d 742e 5072  ....."w"..fmt.Pr
54 00002c0: 696e 746c 6e28 7374 7233 290a 0a09 7374  intln(str3)...st
55 00002d0: 7234 203a 3d20 7374 7231 5b31 313a 6c65  r4 := str1[11:le
56 00002e0: 6e28 7374 7231 295d 0a09 666d 742e 5072  n(str1)]..fmt.Pr
57 00002f0: 696e 746c 6e28 7374 7234 290a 0a09 7661  intln(str4)...va
58 0000300: 7220 6220 7569 6e74 3820 2f2f e688 91e4  r b uint8 //....
59 0000310: bbac e8bf 99e9 878c e4b9 9fe5 8faf e4bb  ................
60 0000320: a5e6 8a8a 756e 6974 38e5 8699 e688 9062  ....unit8......b
61 0000330: 7974 65ef bc8c e585 b6e5 ae9e e698 afe7  yte.............
62 0000340: ad89 e695 88e7 9a84 e380 820a 0966 6f72  .............for
63 0000350: 2062 203d 2030 3b62 203c 2031 3737 203b   b = 0;b < 177 ;
64 0000360: 622b 2b20 207b 0a09 0966 6d74 2e50 7269  b++  {...fmt.Pri
65 0000370: 6e74 6628 2225 6420 2563 5c6e 222c 622c  ntf("%d %c\n",b,
66 0000380: 6229 0a09 7d0a 0961 7272 6179 203a 3d20  b)..}..array := 
67 0000390: 5b5d 6279 7465 2873 7472 3129 202f 2fe5  []byte(str1) //.
68 00003a0: b086 e5ad 97e7 aca6 e4b8 b2e8 bdac e68d  ................
69 00003b0: a2e6 8890 6279 7465 e695 b0e7 bb84 efbc  ....byte........
70 00003c0: 8ce5 8faf e4bb a5e7 9086 e8a7 a3e6 8890  ................
71 00003d0: e4b8 ba70 7974 686f 6ee4 b8ad e79a 846c  ...python......l
72 00003e0: 6973 742e 0a09 666d 742e 5072 696e 746c  ist...fmt.Printl
73 00003f0: 6e28 6172 7261 7929 0a09 6172 7261 795b  n(array)..array[
74 0000400: 305d 203d 2037 3220 2f2f e4b9 9fe5 8faf  0] = 72 //......
75 0000410: e4bb a5e5 8699 e5ad 97e7 aca6 2748 272c  ............'H',
76 0000420: e59c a841 5343 4949 e4b8 ade4 bb96 e4bb  ...ASCII........
77 0000430: ace6 98af e4b8 80e4 b880 e5af b9e5 ba94  ................
78 0000440: e79a 840a 0973 7472 3120 3d20 7374 7269  .....str1 = stri
79 0000450: 6e67 2861 7272 6179 290a 0966 6d74 2e50  ng(array)..fmt.P
80 0000460: 7269 6e74 6c6e 2873 7472 3129 0a0a 0966  rintln(str1)...f
81 0000470: 6d74 2e50 7269 6e74 6c6e 2827 6127 202b  mt.Println('a' +
82 0000480: 2028 2748 2720 2d20 2768 2729 2920 2f2f   ('H' - 'h')) //
83 0000490: e585 b6e5 ae9e e5b0 b1e6 98af e8bf 99e4  ................
84 00004a0: ba9b e5ad 97e7 aca6 e59c a841 5343 4949  ...........ASCII
85 00004b0: e4b8 ade7 9a84 e695 b0e5 ad97 e79b b8e5  ................
86 00004c0: 8aa0 e587 8fef bc8c e5be 97e5 88b0 e79a  ................
87 00004d0: 84e6 95b0 e5ad 97e4 b8ba 3635 e380 820a  ..........65....
88 00004e0: 0966 6d74 2e50 7269 6e74 6c6e 2830 7861  .fmt.Println(0xa
89 00004f0: 2920 2f2f e8a1 a8e7 a4ba 3136 e8bf 9be5  ) //......16....
90 0000500: 88b6 e695 b0e5 ad97 61e5 9ca8 4153 4349  ........a...ASCI
91 0000510: 49e6 8980 e5af b9e5 ba94 e79a 84e6 95b0  I...............
92 0000520: e5ad 970a 0a0a 7d0a                      ......}.
93 [root@yinzhengjie day3]# 
94 
95 '''
xxd命令用法展示

5.小试牛刀

A.用Golang语言实现将小写字母转换成大写字母。

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# more uppercase.go
10 package main
11 
12 import "fmt"
13 
14 func main() {
15         topper("yinzhengjie") //我们在调用函数的时候输入的是小写字母
16 }
17 
18 func topper(s string) string { //后面的string表示返回值的类型。
19         array := []byte(s) //将字符串转换成字节
20         var (
21                 i   int
22                 res string
23         )
24         for i = 0; i < len(s); i++ {
25                 fmt.Printf(string(array[i] - 32)) //格式化输出,将每一次循环的变量i都保存下来。如果不敲击这一
26 行默认只会保留最后一次循环的值.
27                 res = string(array[i] - 32) //将字节转换成字符串并赋值给res字符串.
28         }
29         fmt.Println(res)
30         return res
31 }
32 [root@yinzhengjie day3]#
33 [root@yinzhengjie day3]#
34 [root@yinzhengjie day3]# go run uppercase.go  //实现结果如下
35 YINZHENGJIEE
36 [root@yinzhengjie day3]#
37 '''

  以上代码你看起来可能特别简单,而且思路不严谨,没有判断字母大小写就同意转换成大写的操作!那么如何优化呢?请看下面的代码,稍微做了一下优化的代码风格就有所改变。

 1 /*
 2 #!/usr/bin/env gorun
 3 @author :yinzhengjie
 4 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 5 EMAIL:[email protected]
 6 */
 7 
 8 '''
 9 [root@yinzhengjie day3]# more lower_upper.go 
10 package main
11 
12 import "fmt"
13 
14 func main() {
15         topper("yinzhengjie") //我们在调用函数的时候输入的是小写字母
16 
17 }
18 
19 func topper(s string) string {
20         num := []byte(s) //将传入的字符串转换成字节所对应的数字的数组。
21         for i,v := range num { //循环这个数组
22                 if v >= 'a' && v <= 'z' { //判断这个数字的值是否为小写
23                         num[i] = v - 32  //如果是小姐,就根据ASCII编码表的位置关系,将其转换成大写。
24                 }
25         }
26         fmt.Println(string(num)) 
27         return string(num)  //返回这个数组,通过ASCII编码表中的数字找到对应的字符串并返回。
28 }
29 [root@yinzhengjie day3]# 
30 [root@yinzhengjie day3]# 
31 [root@yinzhengjie day3]# go run lower_upper.go 
32 YINZHENGJIE
33 [root@yinzhengjie day3]# 
34 '''

B.用Golang语言试下将字母的顺序颠倒,专业术语叫反转。

   在写这个小程序之前我们需要了解一下rune这个


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go-nsq使用简述发布时间:2022-07-10
下一篇:
go http 下载视频(TS码流文件)(推荐一个网站学习 go example) - scott_h ...发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap