Go语言学习二 :常数和条件语句

package main

import (
	"fmt"
)

func main() {
	var a int = 4
	var b int32
	var c float32
	var ptr *int

	// 运算符实例实例
	fmt.Printf("a=%T\n", a)//%T是显示类型
	fmt.Printf("b=%T\n", b)
	fmt.Printf("c=%T\n", c)

	// &和*运算符
	ptr = &a
	fmt.Printf("a=%d\n", a)//显示变量值
	fmt.Printf("ptr=%d\n", *ptr)

	a=100
	// if语句
	if a<20{
		fmt.Println("a小于20")
	}

	// if···else语句
	if a<20{
		fmt.Println("a小于20")
	}else{
		fmt.println("a不小于20")}

		b=200
	//if语句嵌套
	if a==100{
		if b==200 {
			fmt.Println("a==100,b==200")
		}
	}	

	//switch case 语句,注意没有break
	var grade string="B"
	var marks int=90

	switch marks{
		case 90:grade="A"
		case 80:grade="B"
		case 50,60,70:grade="C"
		default:grade="D"
	}

	switch{
	case grade=="A":
		fmt.Println("优秀\n")
	case grade=="B",grade=="C":
		fmt.Println("良好\n")
	case grade=="D":
		fmt.Println("及格\n")
	case grade=="F":
		fmt.Println("不及格\n")
	default:
		fmt.Println("差\n")

	}

	// switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。
	var x interface{}//面向对象的,相当于类
	switch i:=x.(type){
		case nil:	//无值  
         fmt.Printf(" x 的类型 :%T",i)                
      	case int:	  
         fmt.Printf("x 是 int 型")                       
      	case float64:
         fmt.Printf("x 是 float64 型")           
      	case func(int) float64:
         fmt.Printf("x 是 func(int) 型")                      
      	case bool, string:
         fmt.Printf("x 是 bool 或 string 型" )       
      	default:
         fmt.Printf("未知型")  
	}

// 	select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。
// select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行
	
// 	以下描述了 select 语句的语法:
// 每个case都必须是一个通信
// 所有channel表达式都会被求值
// 所有被发送的表达式都会被求值
// 如果任意某个通信可以进行,它就执行;其他被忽略。
// 如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。 
// 否则:
// 如果有default子句,则执行该语句。
// 如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
	var c1,c2,c3 chan int 
	var i1,i2 int 

	select{
		case i1 = <-c1://把赋值当成接收
         fmt.Printf("received ", i1, " from c1\n")
      	case c2 <- i2:
         fmt.Printf("sent ", i2, " to c2\n")
      	case i3, ok := (<-c3):  // same as: i3, ok := <-c3
         if ok {
            fmt.Printf("received ", i3, " from c3\n")
         } else {
            fmt.Printf("c3 is closed\n")
         }
      	default:
         fmt.Printf("no communication\n")
	}

}

你可能感兴趣的:(Go语言学习二 :常数和条件语句)