zoukankan      html  css  js  c++  java
  • DAY 98 go02

       1 go 介绍

        -部署方便---》可执行文件---》直接执行
       -静态强类型
    2 开发环境搭建
    -go sdk--》版本
       -ide:快速开发 goland
       -go version
       -go build
       -go run
       -go env  :gopath,goroot
    3 第一个helloworld
    -每一个go文件必须属于一个包  package main
       -main包下的main函数是整个项目的入口
       -fmt包下,包导入了不使用,就报错
       
    4 变量命名规范
    -关键字
       -保留关键字
       -变量建议驼峰,文件名建议下划线
       
    5 基础数据类型
    -数字(整数,无符号整型,float类型)
       -字符串("",``
       -布尔 true,false
       
    6 变量定义:
    -var a int =10
       -var a = 10
       -a := 10
       -变量不能重复定义,变量类型定义阶段就固定了,后期不能改
       
    7 常量
    -const关键字

    1 函数入门

    //1 基本定义函数(无参数,无返回值)
    //func test() {
    // fmt.Println("我是test")
    //}

    // 2 有参数,无返回值
    //func test(a int,b int) {
    //func test(a, b int) {
    // fmt.Println(b)
    // fmt.Println(a + b)
    //}

    //3 有参数,有返回值(声明返回值类型)
    //func test(a,b int) int {
    // return a+b
    //}

    //4 有多个返回值
    //func test(a,b int) (int,string) {
    // return a+b,"计算成功"
    //}

    //5 命名返回值
    //func test(a,b int) (sum int,success string) {
    // //var sum =a+b
    // sum =a+b
    // success="成功"
    // return
    //}

     

    2 函数高级

    //6 返回值是函数
    // 函数是一等公民,头等函数。。   函数可以赋值给一个变量
    // 匿名函数 ---》没有函数名的函数

    //func test() func() {
    // //a是函数类型
    // var a func()
    // a=func() { //匿名函数
    // fmt.Println("我是匿名函数")
    // }
    // return a
    //}

    //7 返回值是复杂函数
    //func test() func(a,b int){
    // return func(a,b int) {
    // fmt.Println(a+b)
    // }
    //}

    //type myfunc func(a int,c int)   //重命名
    //var a byte
    ////byte-->uint8,rune-->int32
    //type myint int
    //不要写出这种,只要能看懂即可
    //func test() myfunc{
    // return func(a int,c int) {
    // fmt.Println(a)
    // }
    //}

    // 8 闭包函数:定义在函数内部,对外部作用域有引用
    // 没有装饰器的概念--》python的特殊语法

    //func test(a int) func() {
    // return func() {
    // fmt.Println(a)
    // }
    //}

    //9 不定长参数
    //func test(a,b,c int) {
    // fmt.Println(a,b,c)
    //}

    //func test(a... int) { //可以传任意长度的int类型
    // fmt.Println(a)
    //}

     

    3 包

    # go中所有go文件必须属于一个包,包名要一致,一般以文件夹名命名
    # 定义自己的包,新建一个文件夹,内建s1.go,s2.go
    ##### s1.go
    package package01
    import "fmt"
    var A string="lqz"
    // 小写表示只在包内部使用,包私有,
    //大写开头表示公有,可以被外部包使用
    func Test() {
    //调用add ,由于在一个包下,直接使用即可,不需要导入
    res:=Add(9,5)
    fmt.Println(res)
    fmt.Println("我是package01包的test")
    }

    ####s2.go
    package package01
    func Add(a,b int) int {
    return a+b
    }


    ###在其他包内使用
    package main

    import (
    "day02/package01"
    "fmt"
    )
    //包的使用
    func main() {
    //包名.函数名  使用
    package01.Test()
    fmt.Println(package01.A)

    }

    4 if-else

    package main

    import "fmt"

    // if-else
    func main() {
    //var a = 10
    //if 条件{
    // 符合条件执行这个代码
    //}else 条件{
    // 符合条件执行
    //}else{
    // 执行这个代码
    //}
    //if a > 10 {
    // fmt.Println("大于10");
    //} else if a < 10 {
    // fmt.Println("小于10");
    //} else {
    // fmt.Println("等于10")
    //}
    if b:=90;b==90{
    fmt.Println("90")
    }
    }

    5 循环

    package main

    // 循环 :只有for,没有while关键字,通过for实现while循环
    // 语法
    //for 变量初始;条件;变量的自增/自减{
    // 循环体内容
    //}

    func main() {
    //1 循环把0--9打印出来
    //for i:=0;i<10;i++ {
    // fmt.Println(i)
    //}
    //var i =99
    //fmt.Println(i)

    //2 省略第一部分(区别在i的作用于范围不一样)
    //i:=0
    //for ;i<10;i++ {
    // fmt.Println(i)
    //}
    //fmt.Println(i)

    //3 省略第三部分
    //i := 0
    //for ; i < 10; {
    // fmt.Println(i)
    // i++
    //}

    // 4 省略分号(for 条件{}---->while循环)
    //i := 0
    //for i < 10 {
    // fmt.Println(i)
    // i++
    //}

    //5 for true {}
    //for true {
    // fmt.Println("死循环")
    //}

    //6 for {}  死循环
    //for {
    // fmt.Println("死循环")
    //}

    // 基于索引的循环

    //基于迭代的循环
    //var s ="lqz"
    //for i,v:=range s{
    // fmt.Println(i)
    // fmt.Println(v)
    //}

    // continue break  任何语言都一样

    }

     

    6 switch

    package main

    import "fmt"

    // switch:多分支,为了优雅的替换if-else

    func main() {
    //1 基本使用
    //var a=1
    //switch a {
    //case 1:
    // fmt.Println("1111")
    //case 2:
    // fmt.Println("222")
    //case 10:
    // fmt.Println("10--10--10")
    //}

    //2 多表达式判断
    //var a=90
    //switch a {
    //case 1,2,3,4:
    // fmt.Println("1111")
    //case 5,6,7,8:
    // fmt.Println("222")
    //case 9,10:
    // fmt.Println("10--10--10")
    //default: //上面都不符合,执行下面
    // fmt.Println("我不知道是多少")
    //}

    //3 无表达式
    //var a = 9
    //switch {
    //case a == 1, a == 2:
    // fmt.Println("1111")
    //case a == 8, a == 9:
    // fmt.Println("222")
    //case a == 9:
    // fmt.Println("10--10--10")
    //default: //上面都不符合,执行下面
    // fmt.Println("我不知道是多少")
    //}

    //4 Fallthrough (穿透)

    var a=3
    switch a {
    case 1,2,3,4:
    fmt.Println("1111")
    //fallthrough  //只要遇到fallthrough,就无条件执行下一个case
    case 5,6,7,8:
    fmt.Println("222")
    fallthrough
    case 9,10:
    fmt.Println("10--10--10")
    fallthrough
    default: //上面都不符合,执行下面
    fmt.Println("我不知道是多少")
    }

    }


    // goto:关键字,有用,只了解,不用去看
  • 相关阅读:
    iOS 苹果开发证书失效的解决方案(Failed to locate or generate matching signing assets)
    iOS NSArray数组过滤
    App Store2016年最新审核规则
    iOS 根据字符串数目,自定义Label等控件的高度
    iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案
    Entity FrameWork 增删查改的本质
    EF容器---代理类对象
    Entity FrameWork 延迟加载本质(二)
    Entity FrameWork 延迟加载的本质(一)
    Entity FrameWork 增删查改
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14894220.html
Copyright © 2011-2022 走看看