1.go 变量声明

1.变量的声明
	1.第一种,指定变量类型,声明后若不赋值,使用默认值。
	var 变量名 类型
	var a int
	a = 10

	2.第二种,根据值自行判定变量类型。
	var 变量名 [类型] = 值

	3.第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。
	变量名 := 值


2.多变量声明
	1.声明,没有立即初始化
	var 变量1, 变量2, 变量3 类型
	var a,b,c int
	a,b,c = 1,2,3

	2.立即初始化
	var 变量1,变量2,变量3 = 值1,值2,值3
	var a,b,c = 1,2,3

	变量1,变量2,变量3 := 值1,值2,值3
	a,b,c := 1,2,3

	3.因式分解写法
	var (
		a int
		b int
	)


 并行或同时赋值:
 	a, b, c := 5, 7, "abc"
	
如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。 

空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃。

_ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值


3.常量的定义
	const 标识符 [类型] = 值
	const LENGTH int = 10
	const a,b,c = 1,false,"str"

	//枚举作用
	const (
    	Unknown = 0
    	Female = 1
    	Male = 2
	)

http://www.runoob.com/go/go-variables.html

http://www.runoob.com/go/go-constants.html

 

4.数组
	1.声明
	var 数组名 [size] 类型

	2.初始化
	var 数组名 = [5] 类型 {1,2,3,4,5}
	var 数组名 = [...] 类型 {1,2,3,4,5} //如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:

5.指针
	1.声明
	var 名字 *类型
	var ip *int

	2.指针数组
	var 名字[] *类型
	var ptr[] *类型

	3.指向指针的指针
	var ptr **int 


6.结构体
	type 结构体名字 struct {
		成员1 类型1
		成员2 类型2
		...
	}

	结构体指针:
	var 结构体名字 *结构体类型 

7.切片
	1.定义
	var 名字 []类型 // 未定义大小的数组
	slice1 := make([]type, len)
	slice2 := make([]type, len, capacity)

	2.初始化
	slice := []int {1,2,3}
	s := arr[:]
	s := arr[startIndex:endIndex] 
	s := arr[startIndex:] 
	s := arr[:endIndex] 

	len();
	cap();
	append();
	copy();

8. map 类型
	1.定义
	var 名字 map[键类型]值类型
	名字 = make(map[键类型]值类型)

	2.初始化
	countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}


	delete();

9.强制类型转换
	类型(表达式)
	float32(表达式)


10.接口类型
	1.定义
	type 接口名 interface {
		方法1()
		方法2()
		。。。

	}
http://www.runoob.com/go/go-interfaces.html



go switch 用法:

用法1 :

package main

import "fmt"

func main() {
	var a int = 10

	switch a {
	case 10:
		fmt.Println("10")
	case 20:
		fmt.Println("20")
	}
}


用法2 : 

package main

import "fmt"

func main() {
	var a int = 20
	var b int = 20

	switch  {
	case b == 10:
		fmt.Println("10")
	case a == 20:
		fmt.Println("20")
	}
}


用法3 : 可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3

package main

import "fmt"

func main() {
	var a int = 10

	switch a {
	case 1,5,10 :
		fmt.Println("11111")
	case 2,6,11 :
		fmt.Println("22222")
	}
}


用法4 : Type Switch

package main

import "fmt"

func main() {
   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("未知型")    
   }  
}


用法5 : fallthrough, 使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。

package main

import "fmt"

func main() {
	switch {
	case false:
		fmt.Println("1、case 条件语句为 false")
		fallthrough
	case true:
		fmt.Println("2、case 条件语句为 true")
		fallthrough
	case false:
		fmt.Println("3、case 条件语句为 false")
		fallthrough
	case true:
		fmt.Println("4、case 条件语句为 true")
	case false:
		fmt.Println("5、case 条件语句为 false")
		fallthrough
	default:
		fmt.Println("6、默认 case")
	}
}

//从以上代码输出的结果可以看出:switch 从第一个判断表达式为 true 的 case 开始执行,如果 case 带有 fallthrough,程序会继续执行下一条 case,且它不会去判断下一个 case 的表达式是否为 true。





 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值