sp1.常见类型与循环

2019-12-05  本文已影响0人  Amok校长
package main

import (
    "fmt"
    "strings"
)

// 全局变量
var (
    name string
    age  int
    isOk bool
)

// 全局常量
const pi = 3.141592653

// 批量声明常量
const (
    statusOk = 200
    notFount = 404
)

// iota
const (
    c1 = iota //0
    c2 = 100  //100
    _  = iota
    c3 //3
    c4 //4
)

// 多个常量在一行声明
const (
    d1, d2 = iota + 1, iota + 2 //d1:1 d2:2
    d3, d4 = iota + 1, iota + 2 //d3:2 d4:3
) // const中每新增一行常量声明 ,iota计数一次

func main() {
    name = "大象"
    age = 16
    isOk = true

    //Go语言中必须声明变量,不使用编译不通过

    // 1.1声明变量同时赋值
    var s1 string = "哈哈"
    fmt.Println(s1)

    // 1.2.类型推导
    var s2 = "20"
    fmt.Println(s2)

    // 1.3.简短变量声明,只能在函数里面用
    s3 := "小红书"
    fmt.Println(s3)

    // 1.4.匿名变量 _

    /*注意事项:
    1.函数外的每个语句, 必须以关键字const、var、func等
    2.:=不能在函数外使用
    3._占位符
    */

    // 2.1 iota
    fmt.Println(c1, c2, c3, c4)

    // 2.2 iota计数机制
    fmt.Println(d1, d2, d3, d4)

    // 3.1 进制转换
    var i1 = 101
    fmt.Printf("%d\n", i1)
    fmt.Printf("%b\n", i1) //打印二进制
    fmt.Printf("%o\n", i1) //打印八进制
    fmt.Printf("%x\n", i1) //打印16进制
    // 八进制
    i2 := 077
    fmt.Printf("%d\n", i2) //打印十进制
    // 十六进制
    i3 := 0x12345
    fmt.Printf("%d\n", i3) //打印十进制

    // 3.2 查看变量类型
    fmt.Printf("%T\n", i3)

    // 4.1 浮点型
    f1 := 1.23456
    fmt.Printf("%T\n", f1) //默认float64类型

    // 5.1 bool型
    g1 := true
    var g2 bool
    fmt.Println(g1)
    fmt.Println(g2) // 默认值是false

    // 6.1 字符串
    // Go语言中字符串是双引号包裹的
    // Go语言中字符是单引号包裹的
    h1 := "小王子"
    h2 := 'h'
    fmt.Printf("%T,%T\n", h1, h2) //string,int32

    // 6.2 多行字符
    h3 := `
    小狐狸对小王子说:
    "很多事是要用心去看的".
    小王子说:那只玫瑰对于我是独一无二的,它驯养了我!
    `
    fmt.Println(h3)

    // 6.3 字符串相关操作
    h4 := `D:\GO\Src`
    fmt.Println(len(h4)) //获取字符串的长度
    h5 := "(~ ̄(OO) ̄)ブ"
    println(h5 + h4)              //字符串拼接
    h6 := strings.Split(h4, "\\") //字符串分隔
    fmt.Println(h6)
    fmt.Println(strings.Contains(h5, "是否包含"))  //是否包含
    fmt.Println(strings.HasSuffix(h5, "是否后缀")) //是否后缀
    fmt.Println(strings.HasPrefix(h5, "是否前缀")) //是否前缀
    h7 := "abcdcef"
    fmt.Println(strings.Index(h7, "c"))     //查看首出现索引
    fmt.Println(strings.LastIndex(h7, "c")) //查看最后出现索引
    fmt.Println(strings.Join(h6, "飞行员"))    //拼接slice中的字符串, 并且以xx字符连接

    // 7.1 字符串长度
    // byte(unit8类型)和rune(int32类型),都属于类型别名
    // 英文字符存的字符是byte字节, 中文或其他语言字符是rune类型
    // Go语言中为了处理非ASCII码类型的字节,定义了rune类型
    j := "He年"   //英文字符占一个字节,中文字符占3个字节
    jn := len(j) //得到的是byte字节的数量
    fmt.Println(jn)

    // 7.2 字符串遍历
    for _, j1 := range j { //从字符串中拿到具体的字符
        fmt.Printf("%c\n", j1) //%c字符显示
    }

    // 7.3 字符串修改
    j2 := []rune(j) // 把字符串强制转换成一个rune切片
    j2[0] = '沙'
    fmt.Println(string(j2)) //把切片强制转换为string类型

    // 7.4 类型转换
    j3 := 10
    var j4 float64
    j4 = float64(j3)
    fmt.Println(j4)

    // 8.1 if判断语句
    //if条件判断语句的特殊写法: 可以在if表达式前添加一个执行语句, 根据变量值进行判断
    if age := 18; age > 19 {
        fmt.Println("小王子的星球")
    } else {
        fmt.Println("面包树的家")
    }

    // 9.1 for循环基本用法
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
    // 9.2 for循环变种1
    var i int
    for ; i < 5; i++ {
        fmt.Println(i)
    }
    // 9.3 for循环变种2
    ii2 := 5
    for ii2 < 10 {
        fmt.Println(ii2)
        ii2++
    }
    // 9.4 for无线循环
    for {
        ii2++
        if ii2 > 20 {
            fmt.Println("可以跳出循环了")
            break
        }
    }
    // 9.5 break和continue的区别:
    for i := 0; i < 10; i++ {
        if i == 5 {
            break //跳出循环,不再执行后续操作
        }
        fmt.Println(i)
    }
    fmt.Println("OK")
    for i := 0; i < 10; i++ {
        if i==5 {
            continue //跳过本次循环,不执行本次操作,后面循环继续
        }
        fmt.Println(i)
    }
    fmt.Println("over")

}

上一篇下一篇

猜你喜欢

热点阅读