zoukankan      html  css  js  c++  java
  • GO

    1.if - else if - else的使用

    package main
    
    import "fmt"
    
    func main() {
        // 1.简单使用
    	var a=10
    	if a==10 {  // 这个位置不能回车,不能换行
    		fmt.Println(a)
    	}
    
    	//2 if - else
        var b =16
    	if b==20 {
    		fmt.Println("20")
    	}else{
    		fmt.Println("15")
    	}
    	
        //3 if - else if - else
    	var c =20
    	if c==20 {
    		fmt.Println("20")
    	}else if c==15 {
    		fmt.Println("15")
    	}else {
    		fmt.Println("10")
    	}
    }
    

    2.for循环

    package main
    
    func main() {
        // 基本语法
    	for 初始化; 条件; 自增/自减{
            
    	}
    	
    }
    

    2.1简单使用

    	for a:=0; a<10; a++  {
    		fmt.Println(a)
    	}
    

    2.2省略初始化

    	a :=0
    	for ;a<10 ; a++ {
    		fmt.Println(a)
    	}
    

    2.3省略初始化和自增自减

    	a :=0
    	for ;a<10 ;  {
    		fmt.Println(a)
    		a++
    	}
    

    2.4.省略初始化和自增自减(进阶版)

    注意:两个分号省略了,(类似while循环)

    	a :=0
    	for a<10  {
    		fmt.Println(a)
    		a++
    	}
    

    2.5.死循环

    	// 死循环一
    	for true{
    		fmt.Println("ak47")
    	}
    
    	// 死循环二(三部分都省略了)
    	for {
    		fmt.Println("ak47")
    		break
    	}
    

    3.switch语句

    3.1基本使用

    package main
    
    import "fmt"
    
    func main() {
    
    	// 1.基本使用
    	var a = 10
    	switch a {
    	case 1:  //相当于if a==1
    		fmt.Println("1")
    	case 5:
    		fmt.Println("5")
    	case 10:
    		fmt.Println("10")
    	}
    }
    

    3.2default

    	var b = 18
    	switch b {
    	case 1:
    		fmt.Println("1")
    	case 5:
    		fmt.Println("5")
    	case 10:
    		fmt.Println("10")
    	default:   //相当于else
    		fmt.Println("你是蔡徐坤")
    	}
    

    3.3多表达式判断

    (只要符合期中一个条件就成立)

    	var c = 18
    	switch c {
    	case 1, 2, 5:
    		fmt.Println("1")
    	case 6, 7:
    		fmt.Println("5")
    	case 10, 15, 18:
    		fmt.Println("10")
    	default:
    		fmt.Println("你是蔡徐坤")
    	}
    

    3.4无表达式

    	var d = 30
    	switch {
    	case d == 20:
    		fmt.Println("1")
    	case d == 30:
    		fmt.Println("5")
    	case d == 40:
    		fmt.Println("10")
    	default:
    		fmt.Println("你是蔡徐坤")
    	}
    

    3.5无表达式

    and(和)的条件 && 或(or)的条件 ||

    	var e = 20
    	var d = 30
    	switch {
    	case d == 30 && e==20:   //同时成立
    		fmt.Println("1")
    	case d == 30:
    		fmt.Println("5")
    	case d == 40:
    		fmt.Println("10")
    	default:
    		fmt.Println("你是蔡徐坤")
    	}
    

    3.6.fallthrough

    无条件执行下一个case(穿透)

    	var f = 2
    	switch  {
    	case f == 1:
    		fmt.Println(1)
    	case f == 2:
    		fmt.Println(2)
    		fallthrough   //一旦碰到 fallthrough会无条件执行下面的语句
    	case f == 6:
    		fmt.Println(250)
    		fallthrough   ////只要代码读到fallthrough与他紧挨着的语句,无论是否满足条件,他都会执行里面的内容
    	case f == 3:
    		fmt.Println(666)
    	}
    

    4.数组

    4.1定义数组

    package main
    import "fmt"
    func main() {
    	// 同一类元素的集合, 不允许混合不同元素
    	// 定义数组(定义了一个大小为4的int类型数组)
    	var a [4]int  // 四个为0的数组
    	fmt.Println(a)  // int默认值为0
    }
    

    4.2使用数组

    (从索引0开始)

    package main
    import "fmt"
    func main() {
    	var a [4]int 
    	fmt.Println(a) 
         a[0] = 10
    	fmt.Println(a[0])
    	fmt.Println(a)
    }
    

    4.3定义并赋初始值(三种方式)

    package main
    import "fmt"
    func main() {
        // 1.
    	//var b [4]int = [4]int{1,2,3,4}
        // 2.
    	//var b = [4]int{1,2,3,4}
        // 3.
    	b := [4]int{1,2,3,4}
    	fmt.Println(b)
    }
    

    4.4定义并赋初值(其他方式)

    package main
    import "fmt"
    func main() {
    	//var c [4]int = [4]int{1,2}  // 只给前两个赋值
    	//var c [4]int = [4]int{1:2}  // 只给第二个赋值,前面是索引,后面是值
    	//var c [4]int = [4]int{1:2,2:3}  // 只给第二,三个个赋值
    	var c [4]int = [4]int{2:3,1:2}  // 只给第二,三个个赋值
    	c[3] = 100
    	fmt.Println(c)
    }
    

    4.5数组大小固定(大小一旦定义,不能改变)

    package main
    import "fmt"
    func main() {
    	//var c [4]int = [5]int{1,2}   // 错的
    	//var c [4]int = [4]int{1,2,3,4,5}   // 错的
    
    	//var c [4]int = [4]int{1,2,3,4}
    	//a[4] = 10  //错的,最大索引为3
    	//fmt.Println(a[4])  //错的
    }
    

    4.6.数组的大小是类型的一部分

    package main
    import "fmt"
    func main() {
    	// 下面两个不是同一种类型(不能比较和加减)
    	var a [3] int
    	var b [4] int
    }
    

    4.7.数组的值类型(引用类型)

    // 说法不准确 (因为py中一切皆对象,不可变数据类型也是对象,对象就是地址)

    // py中的不可变类型(值类型)当做参数传递到函数中,如果在函数中改变该值,原值不会变

    // py中的可变类型(引用类型:地址)当做参数传递到函数中,如果在函数中改变该值,原值会改变

    // go中值类型,当做参数传递时,copy一份过去,值被copy是相当于复制了一份过去

    package main
    import "fmt"
    func main() {
    	var d = [4]int{1,2,3,4}
    	test(d)	 // 当做参数传递过去
        fmt.Println(d) // 原值没有改变
    }
    
    func test(d [4]int)  {
    	d[0] = 100   // 修改值
    	fmt.Println(d) // 传过来的数组改变了,但原值不变
    }
    

    4.8数组的长度(len)

    package main
    import "fmt"
    func main() {
    	var e = [4]int{1,2,3,4}
    	fmt.Println(len(e))
    }
    

    4.9数组的循环

    package main
    import "fmt"
    func main() {
    	// 方法一:
    	var a = [4]int{1,2,3,4}
    	for i:=0 ;i<len(a) ;i++  {
    		fmt.Println(a[i])
    	}
        
    	//方式二:(range关键字,它不是内置函数)把数组放在range关键字后
    	var b = [4]int{1,55,3,66}
    	for z:=range b{
    		//fmt.Println(z)
    		fmt.Println(b[z])  //这不是正统的用法
    	}
        
        // 当用一个变量来接收时,这个变量就是索引
    	// 当用两个变量来接收时,这两个变量就是索引和值
    	for k,v:=range a {
    		fmt.Println(k,v)
    	}
        
        // 当你不想取索引的时候也可以用下划线代替
    	for _,v:=range a {
    		fmt.Println(v)
    	}
    }
    

    4.10多维数组

    package main
    import "fmt"
    func main() {
    	var a [4][3]int
    	fmt.Println(a)
    	a[1][1] =100  // 修改值
    	fmt.Println(a)
    }
    

    4.11多维数组定义并赋初值

    package main
    import "fmt"
    func main() {
    	var a = [4][3]int{{1,1,1},{2,2,2},{3,3,3},{4,4,4}}
    	fmt.Println(a)
        
    	// 把数组第二个位置初值改为[6,6,6]
    	var b = [4][3]int{1:{6,6,6}}
    	fmt.Println(b)
        
    	var c = [4][3]string{1:{"6","6","6"}}
    	fmt.Println(c)
    	// 字符串的空值是空字符串  ""
    	// int类型空值是  0
    	// 数组的空值,取决于类型的空值
    	var d [4][3]string
    	fmt.Println(d)
    }
    
  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/guapitomjoy/p/12406026.html
Copyright © 2011-2022 走看看