• go语言基础实例


    一:变量

    1)变量声明

    func main() {
        var v1 int
        var v2 int
        //一次声明多个变量
        var (
            v3 int
            v4 int
        )
        //变量最开始会有一个零值
        fmt.Println(v1,v2,v3,v4)
    }

    打印效果:

    2)变量初始化

    package main
    
    import (
        "fmt"
        "reflect"
    )
    func main(){
        //1 直接初始化并指定数据类型
        var v1 int = 10
        //2 直接初始化
        var v2 = 20
        //3 := 声明变量及初始化
        v3 :=30
        //利用反射,查看v的类型
        fmt.Println("v3类型是:",reflect.TypeOf(v3))
        fmt.Println(v1,v2)
    }

    运行效果:

    3)变量赋值

    package main
    
    import "fmt"
    func main()  {
        //直接赋值
        var v1 int
        v1 = 123
        //2 声明变量并赋值
        i := 10
        //3多重赋值
        var v2,v3,v4 int
        v2,v3,v4=1,2,3
        fmt.Println(v1,v2,v3,v4,i)
    }

    运行效果:

    4)匿名变量  (注:_   代表特殊的变量名,作用是占位)

    import "fmt"
    
    //(int,string) 指的是返回值类型
    func test() (int,string){
        return 666,"够浪"
    }
    //调用函数
    func main(){
        _,s :=test()    //_ 表示占位 所以打印结果只有一个参数
        fmt.Println(s)
    }

    运行效果

    二:常量与枚举

    1)声明常量

    package main
    
    import "fmt"
    //声明常量
    const filename  = "abc.txt"
    func consts()  {
        const (
            filename = "abc.txt"
            a,b  = 3,4
        )
        //究竟原则
        fmt.Println(filename)
    }
    func main()  {
        consts()
    
    }

    2)  iota 常量生成器

    package main
    
    import "fmt"
    
    func enums2(){
        const (
            python =iota
            golang
            java
        )
        fmt.Println(python,golang,java)
    }
    func main(){
        enums2()
    }

    运行效果

    iota参与运算(位运算原理:参考https://studygolang.com/articles/6657)

    package main
    
    import "fmt"
    
    func enmus3(){
        const (
            //位运算
            b = 1<<(10*iota)
            kb
            mb
            gb
            tb
            pb
        )
        fmt.Println(b,kb,mb,gb,tb,pb)
    }
    func main(){
        enmus3()
    }

    3)枚举

    package main
    
    import "fmt"
    //定义枚举类型
    func enums() {
        const (
            python = 0
            golang =1
            java =2
        )
        fmt.Println(python,golang,java)
    }
    
    func main()  {
        enums()
    }

     三: 基本数据类型

    1)整型

    package main
    import (
        "fmt"
        "reflect"
    )
    func main(){
        var v1 int32
        v1=123
        v2 := 64
        fmt.Println(v1,v2)
        //默认推算类型是int
        fmt.Println(reflect.TypeOf(v2))
    }

    运行效果

    2)浮点型

    package main
    import (
        "fmt"
        "reflect"
    )
    func main(){
        var f1 float32
        f1 =12
        f2 := 12.0
        fmt.Println(f1)
        fmt.Println(reflect.TypeOf(f2))
    }

    运行效果

    3)布尔类型

    package main
    import (
        "fmt"
        "reflect"
    )
    func main(){
        var v1 bool
        v1 = true
        v2 :=(1==2)
        fmt.Println(v1,v2)
        fmt.Println(reflect.TypeOf(v2))
    }

    运行效果

    4)byte字符型

    package main
    
    import "fmt"
    
    func main(){
        var ch byte
        ch='a'
        fmt.Println(ch)
        fmt.Printf("ch=%c",ch)
    }

    5)字符串

    package main
    
    import "fmt"
    
    func main(){
        var  str string
        str ="abc"
        fmt.Printf(str)
        fmt.Println()
        str2 := "hello mike 
     
     测试"
        fmt.Println(str2)
    }

    三: fmt 包的使用

    1)格式说明

    2) 输出

    package main
    import "fmt"
    func main(){
        a :=15
        //%b是二进制
        fmt.Printf("a = %b
    " ,a)
        //只输出一个%
        fmt.Printf("%%
    ")
    
        //字符串
        ch := 'a'
        fmt.Printf("ch = %c, %c
    ",ch,97)
    
        //浮点类型
        f := 3.14
        //%g 紧凑格式
        fmt.Printf("f = %f,%.g
    " ,f ,f)
    
        str := "hello.go"
        fmt.Printf("str=%s
    ",str)
    
    }

    3)输入

    package main
    
    import "fmt"
    
    func main(){
        var  v int
        fmt.Println("请输入数字")
        fmt.Scan(&v)
        fmt.Println("v = ",v)
    }

    运行效果

    4)类型别名

    package main
    
    import (
        "fmt"
        "reflect"
    )
    
    func main(){
        //int类型取个别名
        type myint int
        var i myint  = 100
        fmt.Println(reflect.TypeOf(i))
    }

    运行效果

    5)类型转换

    package main
    
    import "fmt"
    
    func  goo()  {
        var ch byte = 'a'
        var i int = int(ch)
        fmt.Println(i)
    }
    func main(){
        goo()
    }

    四:流程控制

    1)选择结构 :if else 语句

    package main
    
    import (
        "fmt"
        "io/ioutil"
    )
    //第一种写法
    func main(){
        const filename ="abc.txt"
        //ioutil.ReadFile读文件
        contents,err := ioutil.ReadFile(filename)
        if err != nil{
            fmt.Println(err)
        }else {
            fmt.Printf("%s
    ",contents)
        }
        //第二种写法
        if contents,err :=ioutil.ReadFile(filename);err!=nil{
            fmt.Println(err)
        }else{
            fmt.Printf("%s
    ",contents)
        }
    
    }

    2)switch语句

    package main
    
    import (
        "fmt"
    )
    
    //传入成绩,返回评分等级
    func grade(score int) string {
        // 定义字符串
        g := ""
        // go语言switch自动每一句加了break
        switch {
        case score < 0 || score > 100:
            g = "输入错误"
        case score < 60:
            g = "不及格"
            fallthrough
        case score < 80:
            g = "一般"
        case score < 90:
            g = "良好"
        case score <= 100:
            g = "优秀"
        default:
            g="XXX"
        }
        return g
    }
    
    func main() {
        fmt.Println(
            grade(0),
            grade(59),
            grade(60),
            grade(82),
            grade(99),
            grade(100),
            grade(-3),
        )
    }

    2) 循环结果

    package main
    
    import (
        "fmt"
        "time"
    )
    //死循环
    func for1(){
        for {
            fmt.Println("日耳曼战车凉凉")
            //睡一秒
            time.Sleep(1*time.Second)
        }
    }
    func main()  {
        for1()
    }
    package main
    
    import (
        "fmt"
        "time"
    )
    //打印10次
    func for2(){
        for i :=1; i<11;i++{
            fmt.Println("日耳曼战车凉凉",1)
            //睡500毫秒
            time.Sleep(500*time.Millisecond)
        }
    }
    func    main(){
        for2()
    }
    package main
    
    import (
        "fmt"
        "time"
    )
    
    func for3(){
        for i :=1;i<11;i++{
            if i%5==0{
                fmt.Println("爱阿根廷")
            }else if i%2 == 1{
                fmt.Println("爱战车")
            }else{
                fmt.Println("更爱天台")
            }
            time.Sleep(500*time.Millisecond)
        }
    }
    func main(){
        for3()
    }

    4)range(r然哥)

    package main
    
    import "fmt"
    
    func main(){
        s := "abc"
        //接收下标,通过下标取值
        for  i :=range s{
            fmt.Printf("下标=%d,值=%c
    ",i,s[i])
        }
        //直接都接收到
        for i,c := range s{
            fmt.Printf("下标=%d,值=%c
    ",i,c)
        }
    
        for _,c :=range s  {
            fmt.Printf("值=%c
    ",c)
        }
    
    }

    5)跳转语句(break和continue)

    package main
    
    import "fmt"
    
    func main(){
        for i :=0;i<5;i++{
            if i==2{
                //break  终止并退出循环
                continue       //终止本次循环进入下次循环
            }
            fmt.Println(i)
        }
    }

      goto

    package main
    
    import "fmt"
    
    func main(){
        for i :=0;i<5;i++{
            fmt.Println(i)
            //goto必须跳转到方法内
            goto LABEL2
        }
        fmt.Println("程序结束")
    LABEL2:
        fmt.Println("程序over")
    }
  • 相关阅读:
    ubuntu删除django和安装django
    linux shell 统计文件单词出现次数
    linux shell $$、$!特殊符号
    linux安装zabbix需要php两个模块php-bcmach与php-mbstring
    linux 源码编译与卸载
    Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.问题
    Linux中部署DNS分离解析技术
    NFS网络文件系统服务搭建
    Samba服务搭建
    Linux RAID磁盘阵列技术
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/10801188.html
Copyright © 2020-2023  润新知