zoukankan      html  css  js  c++  java
  • 😉P03 Go 基础知识😉

    1 概要

    • switch case语句
    • for循环语句
    • goto语句
    • 字符串的格式化
    • 运算符

    2 switch case语句

    package main
    
    func main() {
    	/*switch 1 + 1 {
    	case 1:
    		fmt.Println("equal one")
    	case 2:
    		fmt.Printf("equal two")
    	case 3:
    		fmt.Println("equal three")
    	default:
    		fmt.Println("都不满足")
    	}*/
    
    	// 变量
    
    	/*var age int
    	fmt.Scanln(&age)
    
    	switch age {
    	case 1:
    		fmt.Println("equal one")
    	case 2:
    		fmt.Printf("equal two")
    	case 3:
    		fmt.Println("equal three")
    	default:
    		fmt.Println("都不满足")
    	}*/
    
    	// 注意事项:数据类型一致的情况
    }
    

    3 for循环

    3.1 死循环

    for {
        ...
    }

    3.2 布尔值

    for 1 > 2 {
        ...
    }
    
    flag := true
    for flag {
        ...
    }

    示例

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	// 示例1:死循环
    	/*fmt.Println("开始循环")
    	for {
    		fmt.Println("红鲤鱼与绿鲤鱼与驴")
    		time.Sleep(time.Second * 1) // 等一秒再继续执行
    	}
    	fmt.Println("结束循环")*/
    
    	// 示例2:
    	/*fmt.Println("开始循环")
    	for 2 > 1 {
    		fmt.Println("红鲤鱼与绿鲤鱼与驴")
    		time.Sleep(time.Second * 1) // 等一秒再继续执行
    	}
    	fmt.Println("结束循环")*/
    
    	// 示例3:
    	/*fmt.Println("开始循环")
    	number := 1
    	for number < 5 {
    		fmt.Println("红鲤鱼与绿鲤鱼与驴")
    		number = 10
    		time.Sleep(time.Second * 1) // 等一秒再继续执行
    	}
    	fmt.Println("结束循环")*/
    
    	// 示例4:
    	/*fmt.Println("开始循环")
    	number := 1
    	for number < 5 {
    		fmt.Println("红鲤鱼与绿鲤鱼与驴")
    		number = number + 1
    		time.Sleep(time.Second * 1) // 等一秒再继续执行
    	}
    	fmt.Println("结束循环")*/
    	
    	// 示例5:
    	fmt.Println("开始循环")
    	flag := true
    	for flag {
    		fmt.Println("红鲤鱼与绿鲤鱼与驴")
    		flag = false
    		time.Sleep(time.Second * 1) // 等一秒再继续执行
    	}
    	fmt.Println("结束循环")
    }

    3.3 变量和条件

    for i := 1; i < 10 {
        fmt.Println("XXX")
        i = i + 1
    }

    3.4 变量&条件&变量赋值

    for i := 1; i < 10; i = i + 1 {
        fmt.Println("XXX")
    }

    3.5 扩展

    // 对于i = i + 1 的简写:i++
    // 对于i = i - 1 的简写:i--
    

    3.6 continue 关键字

    在for循环中使用,当循环遇到continue关键字时,会停止当前的循环继续执行下一次循环。

    for {
        fmt.Println("samuel")
        continue
        fmt.Println("nagase")
    }

    3.7 break 关键字

    在for循环中,循环中一旦遇到break,就会立刻跳出循环

    for {
        fmt.Println("xxxxx")
        break
        fmt.Println("samuel")
    }
    

    4 goto语句(C、Go)

    goto语句在C和Go中存在,Java、Python没有这样的语法。

    该语法用于跳转到指定的行,然后向下执行代码

    package main
    
    import "fmt"
    
    func main() {
    	var userName string
    	fmt.Printf("请输入您的用户名:")
    	fmt.Scanln(&userName)
    
    	if userName == "samuel" {
    		// svip
    		goto SVIP
    	} else if userName == "nagase" {
    		// vip
    		goto VIP
    	}
    
    	fmt.Println("预约······")
    
    	VIP:
    	fmt.Println("等号······")
    
    	SVIP:
    	fmt.Println("进入······")
    }
    

    5 字符串的格式化

    将数据格式化成为特定格式的字符串时,可以使用字符串格式化。

    fmt.Printf("My name is %s , I am going to %s in this %s !", userName, userBehavior, userLocation)
    

    6 运算符

    6.1 算数运算符

    +、-、*、/、%、++、--

    6.2 关系运算符

    ==、!=、>、<、>=、<=

    6.3 逻辑运算符

    &&、||、!

    if !true {
        fmt.Println("xxx")
    }

    6.4 位运算符

    &、|、^、<<、>>

    计算机中的存储、运算、网络传输等任何行为,本质上都是二进制的操作,例如:01010101。

    十进制和二进制的转换关系

    十进制 二进制
    0 0
    1 1
    2 10
    3 11
    4 100
    5 101
    6 110
    7 111
    8 1000
    9 1001
    10 1010
    ... ...

    二进制转换为十进制

    10101  ->   2 ** 4 + 2 ** 2 + 2 ** 0 = 16 + 4 + 1 = 21

    十进制转换为二进制

    99   ->     64 + 32 + 2 + 1 => 2 ** 6 + 2 ** 5 + 2 ** 1 + 2 ** 0 = 1100011

    位运算指的是二进制之间的运算

    # 1、按位进行与运算(只有两个全是1才是1)
    r1 := 5 & 99
    5   -> 0000101
    99 -> 1100011
             0000001 -> 1
    
    # 2、按位进行或运算(只要有一个1就是1)
    r2 := 5 | 99
    5   -> 0000101
    99 -> 1100011
             1100111 -> 2 ** 6 + 2 ** 5 + 2 ** 2 + 2 ** 1 + 2 ** 0 = 103
    
    # 3、按位进行异或运算(只要上下不同就是1)
    r3 := 5 ^ 99
    5   -> 0000101
    99 -> 1100011
             1100110 -> 64 + 32 + 4 + 2 = 102
    
    # 4、按位向左移动(右边补0)
    r4 := 5 << 2
    5 -> 101
    向左移动两位 -> 10100 -> 16 + 4 = 20
             
    # 5、按位向右移动(右边切割)
    r5 := 5 >> 2
    5 -> 101
    向右移动两位 -> 1 -> 1
    
    # 6、比较清除(以第一个值为参考系,让前面的和后面的值的二进制进行比较,如果两个位置都是1,则将前面的那个1位置置为0)
    r6 := 5 ^ 99
    5   -> 0000101
    99 -> 1100011
             0000100 -> 4

    6.5 赋值运算符

    =、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=

    6.6 运算符的优先级

    5 ----- *、/、%、<<、>>、&、&^

    4 ----- +、-、|、^

    3 ----- ==、!=、<、<=、>、>=

    2 ----- &&

    1 ----- ||

    注意:不要想办法去记住他,使用括号

    叮嘱:不要太过于用心去背、记,只要认识即可

      

  • 相关阅读:
    回滚事件只是让原数据看起来不变,但是id还是会自增吗?
    什么是Java中的原子操作( atomic operations)
    Java并发编程:volatile关键字解析
    对Java CAS的一些了解(正在整理学习中)
    问号和冒号----条件运算符, 问号冒号表达式
    对Java ConcurrentHashMap的一些了解
    Java HashMap的工作原理
    Java hashCode() 和 equals()
    Java 对比Hashtable、Hashmap、Treemap有什么不同?
    Java TreeMap详细介绍和使用示例
  • 原文地址:https://www.cnblogs.com/nagase/p/13170670.html
Copyright © 2011-2022 走看看