第二章 Go语言数据类型

一、整数类型

  按照长度分为:    int8  、int16  、int32  、int64

  对应的无符号整型:  uint8、uint16、uint32、uint64

  获取对象的长度用len()

  进制

    十进制:

        var a int = 10

        fmt.Printf("%d \n",a)  //10

        fmt.Printf("%b \n",a)  //1010 占位符%b表示二进制

    八进制:

        var b int = 077

        fmt,Printf("%o \n",c)  //ff

    十六进制:

        var c int = oxff

        fmt.Printf("%x \n",c)  //ff

        fmt.Printf("%X \n",c)  //FF

  内存地址:

    fmt.Printf("%p \n",&a)  //0x00004c080  占位符%p表示十六进制的内存地址

  注:不同int类型之间不能转换相加减,需要转换成相同类型

  interface可以转换任意类型

func test() {
    var a interface{}    //{}表示空的interface
    var b int = 100
    var c float32 = 1.2
    var d string = "hello"
    a = b
    fmt.Println("a=", a)    //100
    a = c
    fmt.Println("a=", a)    //1.2
    a = d
    fmt.Println("a=", a)    //hello
}

二、浮点型

  类型:float32和float64  不定义默认是0  浮点数不够精确,可以把浮点数先*100或*1000编程整数进行运算  占位符输出%f

三、布尔类型

  类型:True和Flase  默认Flase  go语言不能将整型强制转换成布尔型  布尔型无法参与数值运算,也无法与其他类型转换  用%t表示格式化

四、String类型

  定义:以原生数据类型出现内部实现使用utf-8

  表示字符串:

      “ ”  //双引号输出会出现转义符的意义

      ··  //反引号会忽视转义符的意义

  字符串常用转义符:

      \r:回车符(返回行首)  \n:换行符(直接跳到下一行的同列位置)  \t:制表符  \':单引号  \":双引号  \:反斜杠

  字符串常用方法

+或fmt.Sprintf    //拼接字符串
(1)
c = c+c
fmt.Printf("c = %s\n",c)
(2)
c = fmt.Sprintf("%s%s",c,c)
fmt.Printf("c=%s\n",c)

strings.Split    //分割
import "strings"
func test(){
    ip := "10.10.10.1;192.168.1.1"
    ipArray := strings.Split(ip,";")
    fmt.Printf("first ip :%s\n",ipArray[0])
    fmt.Printf("second ip :%s\n",ipArray[1])
}

strings.contains    //判断是否包含
import "strings"
func test(){
    ip := "10.10.10.1;192.168.1.1"
    result := strings.Contains(ip,"10.10.10.1")
    fmt.Println(result)    //返回布尔值
}

strings.HasPrefix/HasSuffix    //判断前缀和后缀
import "strings"
func test(){
    str := "https://www.baidu.com"
    if strings.HasPrefix(str,"http"){
        fmt.Println("str is http url")
    }else{
        fmt.Println("str is not http url")
    }
    var last bool
    last = strings.HasSuffix(str,"com")
    fmt.Printf(last)    //返回bool
}

strings.Index()/LastIndex()    //子串出现的位置
import "strings"
func test(){
    str := "https://www.baidu.com"
    index := strings.Index(str,"baidu")    //baidu第一次出现的位置
    fmt.Printf("str is index:%d\n",index)
    index = strings.LastIndex(str,"baidu")    //baidu最后一次出现的位置
    fmt.Printf("baidu last index:%d\n",index)
}

strings.Join(a[]string,sep string)    //join操作,把一个数组每一个元素根据分隔符为基准重新组成字符串
func test(){
    var strArr []string = []string{"10.10.10.1","11.11.11.2","12.12.12.3"}
    resultStr = strings.Join(strArr,";")
    fmt.Printf("result=%s\n"mresultStr)    //输出result=10.10.10.1;11.11.11.2;12.12.12.3
}

五、字符类型

  定义:组成字符串的元素叫做字符,字符用' '表示,分别有uint8(byte)类型,代表一个ASCII码的字符;rune类型,代表一个UTF-8字符

package main
import "fmt"
func main(){
    s1 := "Golang"
    c1 := 'G'
    fmt.Println(s1,c1)    //Golang 71    字符的编码
    s2 := "中国"
    c2 := '中'    //汉字表示3位
    fmt.Println(s2,c2)    //中国    20013
    s3 := "Go语言"
    fmt.Println(len(s3))    //11    一个字符1字节,中文3字节
    for i := 0;i<len(s3);i++{    //bytes中文乱码
        fmt.Printf("%c\n",s3[i])    //%c打印字符
    }
    for k,v := range s3{    //可打印中文字符
        fmt.Printf("%d,%c\n",v)    //k表示字节的索引数
    }
}

  强制转换字符串和utf-8

func main(){
    s1 := "big"
    bytes1 := []byte(s1)    //将字符串强制转换成字节数组类型
    fmt.Println(bytes1)    //[98 105 103]分别对应了各自的字符
    bytes1[0] = 'p'
    fmt.Println(string(bytes1))    //[112 105 103]
    s1 = string(bytes1)    //将字节数组强制转换成字符串类型
    fmt.Println(s1)
    s2 := "大白菜"
    runes2 := []rune(s2)
    runes2[0] ='小'
    fmt.Println(string(runes2),len(runes2))
}
//只有强制类型转换,不能重新赋值

  字符串反转操作

//英文
func main(){
    s1 := "hello"
    byteArray := []byte(s1)    //[h e l l o]
    //方法1
    s2 := ""
    for i :=len(byteArray)-1;i>=0;i--{
        s2 = s2 + string(byteArray[i])    //byteArray[i] --> o l l e h
    }
    fmt.Println(s2)
    //方法2
    for i := 0;i<len(byteArray)/2;i++{
        byteArray[i],byteArray(len(byteArray)-1-i) = byteArray(length-1-i),byteArray[i]
    }
  fmt.Println(string(byteArray))
}

//中文
func main(){
    str := "中文"
    r []rune := []rune(str)
    for i := 0;i<len(r)/2;i++{
        tmp := r[len(str)-i-1]
        r[len(str)-i-1] = r[i]
        r[i] = tmp
    }
    fmt.Println(string(r[i]))
}

六、指针

七、Array数组

八、Slic切片

九、Map哈希表

十、Struct结构体

十一、时间和日期

  使用time包中的time.Time类型用来表示时间

  获取当前时间:

    now := time.Now()  获取当前时间

    now := time.Now().Day()

    now := time.Now().Minute()

    now := time.Now().Month()

    now := time.Now().Year()

  格式化:

func main(){
    now := time.Now()
    fmt.Printf("current time:$v\n",now)
    tear := now.Year()
    month := now.Month()
    day := now.Day()
    hour := now.Hour()
    minute := now.Minute()
    send := now.Second()
    fmt.Printf("%02d-%02d-%02d-%02d-%02d-%02d", year, month, day, hour, minute, send)
}

  定时器

func main(){
    ticker := time.Tick(5*time.Second)    //每5s执行一次其中的函数
    for i := range ticker{
        fmt.Printf("%v\n",i)
        函数()
    }
}

  格式化

func main(){
    now := time.Now()
    fmt.Println(now.Format("02/1/2006 15:04"))
    fmt.Println(now.Format("2006/1/02 15:04"))
    fmt.Println(now.Format("2006/1/02"))
}
//格式可以换,时间必须为2006 1 02 15:04

  计算程序运行时间

func main(){
    start := time.Now().UnixNano()
    for i := 0;i<10;i++{
        time.Sleep(time.Millisecond)
    }
    end := time.Now().UnixNano()
    cost := (end - start)/1000000    //微秒化成秒
    fmt.Printf("%vn",cost)
}

  

猜你喜欢

转载自www.cnblogs.com/parallel-Y/p/11311603.html
今日推荐