LOADING

加载过慢请开启缓存 浏览器默认开启

GO的学习笔记2

GoLang的语言基础

1输出

在终端将想要展示的数据显示出来,例如:欢迎登录、请输入用户名等。。。

  • 内置函数
    • print
    • println
  • fmt包(推荐)
    • fmt.Print
    • fmt.Println

扩展:进程里有 stdin/stdout/stderr 。

package main

import "fmt"

func main() {
    // 基于内置函数(不推荐)
    //print("好吃不过饺子 \n")
    //println("好吃不过饺子")
    // fmt包(推荐)
    //fmt.Print("好吃不过饺子 \n")
    //fmt.Println("好吃不过饺子")
    //fmt.Println("我叫", "zlw", "我媳妇", "是个", "....")
    //fmt.Println("我叫zlw我媳妇是个....")

    // fmt包 扩展:格式化输出
    // %s,占位符 "文本"
    // %d,占位符 整数
    // %f,占位符 小数(浮点数)
    // %.2f,占位符 小数(保留小数点后2位,四舍五入)
    // 百分比
    fmt.Printf("老汉开着%s,去接%s的媳妇,多少钱一次?%d块。嫂子给打折吧,%.2f怎么样?小哥哥包你100%%满意", "车", "老男孩", 100, 3.889)
}

2.注释

  • 单行注释, //
  • 多行注释, /* */

快捷:ctrl + ?

3.初识数据类型

  • 整型,整数
  • 字符串,文本
  • 布尔型,真假
package main

import "fmt"

func main() {
    // 整型
    fmt.Println(666)
    fmt.Println(6 + 9)
    fmt.Println(6 - 9)
    fmt.Println(6 * 9)
    fmt.Println(16 / 9) // 商
    fmt.Println(16 % 9) // 余数

    // 字符串类型,特点:通过双引号
    fmt.Println("zlw")
    fmt.Println("钓鱼要掉刀鱼,刀鱼到岛上钓")
    fmt.Println("zlw" + "3213")
    //fmt.Println("zlw" + 666)
    fmt.Println("zlw" + "666")
    // 对比
    fmt.Println("1" + "2") // 结果:"12"
    fmt.Println(1 + 2)     // 结果:3

    // 布尔类型,真假
    fmt.Println(1 > 2) // false  假
    fmt.Println(1 < 2) // true   真
    fmt.Println(1 == 2)
    fmt.Println(1 >= 2)
    fmt.Println("zlw" == "")

    // 超前
    if 2 > 1 {
        fmt.Println("hello GO!!!")
    } else {
        fmt.Println("hello")
    }

}

4.变量

4,1

声明 + 赋值

var sd string = "zlw"
fmt.Println(sd)

var age int = 73
fmt.Println(age)

var flag bool = true
fmt.Println(flag)

先声明后赋值

// 声明了一个字符类型变量 sd
var sd string
// 给sd变量赋值
sd = "zlw"
fmt.Println(sd)

4.2 变量名要求

【要求】变量名必须只包含:字母、数字、下划线

【要求】数字不能开头

【要求】不能使用go语言内置的关键字

break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for、import、return、var
  • 建议
    • 变量名见名知意:name/age/num ; v1、v2、v3
    • 驼峰式命名:myBossName / startDate

5.常量

不可被修改的变量。

package main

import "fmt"

func main() {
    // 定义变量
    //var name string = "zlw"
    //var name = "zlw"
    name := "zlw"
    name = "周洛薇"
    fmt.Println(name)

    // 定义常量
    //const age int = 98
    const age = 98
    fmt.Println(age)
}

5.1 因式分解

package main

import "fmt"

func main() {
    // 定义变量
    //var name string = "zlw"
    //var name = "zlw"
    name := "zlw"
    name = "zlw"
    fmt.Println(name)

    // 定义常量
    //const age int = 98
    const age = 98
    fmt.Println(age)
}

5.2 全局

package main

import "fmt"

const Data = 999
const (
    pi     = 3.1415926
    gender = "男"
)

func main() {
    // 定义变量
    //var name string = "zlw"
    //var name = "zlw"
    name := "zlw"
    name = "周洛薇"
    fmt.Println(name)

    // 定义常量
    //const age int = 98
    const age = 98
    fmt.Println(age)

    // 常量因式分解
    const (
        v1 = 123
        v2 = 456
        //pi = 9.9
    )
    fmt.Println(v1, v2, pi, gender)
}

5.3 iota

当做一个在声明常量时的一个计数器。

package main

const (
    monday = iota + 1
    tuesday
    wednesday
    thursday
    friday
    saturday
    sunday
)

const (
    n1 = iota
    n2
    n3
)

func main() {

    // iota
    // 示例1
    /*
        const (
            v1 = 1
            v2 = 2
            v3 = 3
            v4 = 4
            v5 = 5
        )
        fmt.Println(v1, v2, v3, v4, v5)
    */

    // 示例2
    /*
        const (
            v1 = iota
            v2
            v3
            v4
            v5
        )
        fmt.Println(v1, v2, v3, v4, v5)
    */

    // 示例3
    /*
        const (
            v1 = iota + 2
            v2
            v3
            v4
            v5
        )
        fmt.Println(v1, v2, v3, v4, v5)
    */

    // 示例4:
    /*
        const (
            v1 = iota + 2
            _
            v2
            v3
            v4
            v5
        )
        fmt.Println(v1, v2, v3, v4, v5)
    */

}

6.输入

让用户输入数据,完成项目交互。

  • fmt.Scan

  • fmt.Scanln

  • fmt.Scanf

    package main
    
    import "fmt"
    
    func main() {
        // 示例1:fmt.Scan
        /*
            var name string
            fmt.Println("请输入用户名:")
            fmt.Scan(&name)
            fmt.Printf(name)
        */
    
        // 示例2:fmt.Scan
        var name string
        var age int
    
        fmt.Println("请输入用户名:")
        // 当使用Scan时,会提示用户输入
        // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息
        _, err := fmt.Scan(&name, &age)
        if err == nil {
            fmt.Println(name, age)
        } else {
            fmt.Println("用户输入数据错误", err)
        }
        // 特别说明:fmt.Scan 要求输入两个值,必须输入两个,否则他会一直等待。
    }
    
package main

import "fmt"

func main() {
    // 示例1:fmt.Scanln
    /*
        var name string
        fmt.Print("请输入用户名:")
        fmt.Scanln(&name)
        fmt.Printf(name)
    */

    // 示例2:fmt.Scanln

    var name string
    var age int
    fmt.Print("请输入用户名:")
    // 当使用Scanln时,会提示用户输入
    // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息
    count, err := fmt.Scanln(&name, &age)
    fmt.Println(count, err)
    fmt.Println(name, age)

    // 特别说明:fmt.Scanln 等待回车。
}

7.条件语句

7.1 最基本

if 条件 {
    成立后,此代码块执行
}else{
    不成立,此代码块执行
}
if 条件 {
    成立后,此代码块执行
}

7.2 多条件判断

if 条件A{
    ...
}else if 条件B{
    ...
}else if 条件C{
    ...
}else{
    ...
}

7.3 嵌套

package main

import "fmt"

func main() {
    fmt.Println("欢迎致电10086,1.话费相关;2.业务办理;3.人工服务。")

    var number int
    fmt.Scanln(&number)

    if number == 1 {
        fmt.Println("话费服务,1.交话费;2.查询。")
        var n1 int
        fmt.Scanln(&n1)
        if n1 == 1 {
            fmt.Println("缴话费啦")
        } else if n1 == 2 {
            fmt.Println("查话费了")
        } else {
            fmt.Println("输入错误")
        }
    } else if number == 2 {
        fmt.Println("业务办理")
    } else if number == 3 {
        fmt.Println("人工服务")
    } else {
        fmt.Println("输入错误")
    }

    // 建议:条件的嵌套不要太多
}
载入天数...载入时分秒...