Go语言学习笔记四--基本数据类型与string类型常用方法

一、基本数据类型之整数浮点数

package main

import "fmt"

func main() {
    var a = 10
    var b int16 = 20
    fmt.Println(a, b)
    b = int16(a)
    fmt.Println(b)

    c := 3.14
    fmt.Println(c)
    var d float32 = 12.6
    fmt.Println(d)
    fmt.Println(c + float64(d))
}

二、string字符串类型的使用

  1 package main
  2 
  3 import (
  4     "fmt"
  5     "strings"
  6 )
  7 
  8 func main() {
  9     var s1 = "hello"
 10     fmt.Println(s1)
 11 
 12     s2 := " world"
 13     fmt.Println(s2)
 14 
 15     var s3 = s1 + s2 //字符串拼接
 16     fmt.Println(s3)
 17 
 18     var s4 = "ABCD\nefgh"//遇到特殊字符特殊处理
 19     fmt.Println(s4)
 20 
 21     var s5 = `1234\n5678` //反引号会将括号内所有字符打印出来,包括任何特殊字符
 22     fmt.Println(s5)
 23 
 24     var l6 = len(s4)
 25     fmt.Println(l6)
 26 
 27     var s6 = fmt.Sprintf("%s--%s--%s",s1,s2,s3)//字符串格式化拼接方式
 28     println(s6)
 29 
 30     ipAddr := "192.168.0.119;39.105.45.77"
 31 
 32     ipArray := strings.Split(ipAddr,";")//字符串分割 以分号作为分割
 33 
 34     fmt.Printf("The first ip:%s\n",ipArray[0])
 35     fmt.Printf("The second ip:%s\n",ipArray[1])
 36 
 37     result := strings.Contains(ipAddr,"39.105.45.77")//查看是否包含子串
 38     fmt.Println(result)
 39 
 40     str := "http://baidua.com"
 41     if strings.HasPrefix(str,"http") {
 42         println("This is a http url")
 43     } else {
 44         println("This isn't http url")
 45     }
 46 
 47     if strings.HasSuffix(str,"baidu.com") {
 48         println("this is a baidu url")
 49     } else {
 50         println("this isn't baidu url")
 51     }
 52 
 53     index := strings.Index(str,"baidu")
 54     println(index)
 55 
 56     index = strings.LastIndex(str,"a")
 57     println(index)
 58 
 59     strIpArray := strings.Join(ipArray,"----")
 60     println(strIpArray)
 61 
 62     //字符串底层就是一个byte数组
 63     s7 := "ABCDEF"
 64     fmt.Printf("s7[0] = %c\n",s7[0])
 65 
 66     //很明显这个range返回值是两个 前面表示数组的下标 后面表示当前下标的值
 67     for index, ch := range s7{
 68         fmt.Printf("s7[%d] = %c\n",index, ch)
 69     }
 70     //如果就一个返回值的话那就是返回数组的下标
 71     for ch := range s7 {
 72         fmt.Println(ch)
 73     }
 74 
 75     //字符串是没办法通过下标进行修改的 因此我们要将字符串转成byte数组
 76     var byteSplit []byte
 77     byteSplit = []byte(s7)
 78     for i := 0; i < len(byteSplit); i++ {
 79         fmt.Printf("%c ", byteSplit[i])
 80     }
 81     println()
 82 
 83     //修改数组元素然后转成字符串即可完成修改字符串
 84     byteSplit[0] = 'M'
 85     s7 = string(byteSplit)
 86     println(s7)
 87 
 88     //由于字符串的底层原理是byte 所以在求字符串长度的时候,求出来的是byte的长度
 89     s8 := "小尾学长"
 90     fmt.Printf("s8 len = %d\n", len(s8)) //长度是12 因为每个中文占三个字节
 91 
 92     //在go里面表示一个utf8的字符使用的是rune
 93     var c1 rune= '中'
 94     fmt.Printf("c1 = %c\n",c1)
 95 
 96     var runeSplit []rune
 97     runeSplit = []rune(s8)
 98     fmt.Printf(" %c\n %c\n %c\n %c\n",runeSplit[0],runeSplit[1],runeSplit[2],runeSplit[3] )
 99     fmt.Printf("runeSplit len is %d \n",len(runeSplit))//长度是4
100     runeSplit[3] = '姐'
101     s8 = string(runeSplit)
102     println(s8)//变成小尾学姐啦...
103 
104 }