go2

go2

package main

import "fmt"

//func main(){
//	// 给int 定义个别名
//	type myint int
//	var i myint = 100
//	fmt.Println(i)
//	// 在main包里的类型 作用域
//	fmt.Println(reflect.TypeOf(i)) // main.myint  源码中用的多
//}

//类型转换
//func main(){
//	// go 不支持隐式转换,必须显式声明(先用int)
//	var ch byte = 'a'
//	var i int = int(ch)
//	fmt.Println(i)
//}




//func main(){
//	const filename = "aaa.txt"
//	//读文件
//	contents, err := ioutil.ReadFile(filename)
//	// None  nil
//	if err != nil{
//		fmt.Println(err)
//	}else{
//		fmt.Printf("%s\n",contents)
//	}
//	// if 也可以这样写
//	if contents, err := ioutil.ReadFile(filename);err!=nil{
//		fmt.Println(err)
//	}else{
//		fmt.Printf("%s\n",contents)
//	}
//}

//// 传入成绩,得到成绩评分
//func grade(score int)string{
//	//定义空串
//	g := ""
//	switch{
//	case score<0 || score>100:
//		g = "错误"
//		fallthrough // 不停了,下一个,自动加了break,停止
//	case score<60:
//		g = "F"
//	case score<80:
//		g = "C"
//	case score<100:
//		g = "A"
//	}
//	return g
//}
//
//func main(){
//	fmt.Println(
//		grade(0),
//		grade(90),
//		grade(101),
//	)
//}

// go 的死循环 挺多的, 做后端服务,一直等待客户
//func for1(){    // 一直循环 死循环
//	for{
//		fmt.Println(123)
//		// 睡2 秒
//		time.Sleep(2*time.Second)
//	}
//}
//
//// 2.- 正常循环
//func for2(){
//	for i:=1 ;i<10;i++{
//		fmt.Println(123)
//		// 睡2 秒
//		time.Sleep(1*time.Second)
//	}
//}


// range 的
//func main(){
//   s:="小小abc"
//   for i:= range s{
//   		fmt.Printf("下标=%d,值=%c\n",i,s[i])
//   }
//
//
//	for i,c:= range s{
//		fmt.Printf("下标=%d,值=%c\n",i,c)
//	}
//}

//func main(){
//	for i:=0 ; i<10 ;i++{
//		fmt.Println(i)
//		goto LABEL
//	}
//	fmt.Println("结束")
//	LABEL:
//		fmt.Println("label")
//}

//若函数名大写,则包外可以调用
//func Test(args ...int){
func Test(args ...int){
	//fmt.Println(111)
	for _,n := range args{
		fmt.Println(n)
	}
}
func Test1(a int , args ...int){ //必须写在前面
	//fmt.Println(111)
	for _,n := range args{
		fmt.Println(n)
	}
}
func Test2(a int , args ...int)(b int){ //必须写在前面  ()返回值
	//fmt.Println(111)
	for _,n := range args{
		fmt.Println(n)
	}
	return b  //返回值
}



func Test3() int { //必须写在前面  ()返回值
    sum:=0
	for i:=1 ; i<100 ; i++{
		sum+=i
	}
	return sum
}

// 递归写法
func Test4(i int ) int { //必须写在前面  ()返回值
	sum:=0
	if  i == 1 {
		return 1
	}
	return sum + Test3()
}

//func main(){
//	Test()
//	Test(1)
//	Test(1,2,3,4)
//	fmt.Println(Test3())
//}


//func main(){
//	defer tt(0)   //这个报错,不影响正常程序的使用
//	fmt.Println(Test4(10))
//  // 默认最后走
//	defer fmt.Println(123)
//	fmt.Println("第二次")
//
//	defer fmt.Println("defer语句1")
//	defer fmt.Println("defer语句2")
//	defer fmt.Println("defer语句3")
//}
//
//func tt(x int){
//	fmt.Println(10/x)
//}
//


//指针
//取地址符 &
//func main(){
//	var a int = 10
//	fmt.Printf("a变量的地址是:%x\n",&a) // a变量的地址是:c000054080
//}

//func main(){
//	var a int = 10
//	var ip *int
//	ip = &a
//	fmt.Printf("a的地址是,%x\n",&a) //a的地址是,c000010098
//	fmt.Printf("ip指针存储的地址是,%x\n",ip) //ip指针存储的地址是,c000010098
//	fmt.Printf("ip指针指向的值是,%d\n",*ip) //ip指针存储的地址是,c000010098
//}



//func main(){
//	var num int = 10
//	fmt.Println(&num)  //地址 0xc000054080
//	var ptr *int
//	ptr = &num  // &变量地址给他
//	//修改
//	*ptr = 20   // *地址修改这个地址的值
//	fmt.Println(num)   //20
//	fmt.Println(ptr)  //地址 0xc000054080
//
//}


// 取地址符 &
//func main(){
//	var ptr *int
//	fmt.Println("ptr的值为",ptr)
//	if ptr==nil{
//		fmt.Println("ptr的值为nil")
//	}else{
//		fmt.Println("ptr的值为",ptr)
//	}
//}

func swap(a,b *int){
	*a,*b = *b,*a   //指针修改
}

//func main(){
//	a,b := 1,2
//	swap(&a,&b)  //传地址
//	fmt.Println(a,b)
//}


//new make 数组 切片
//func main(){
//	p:=new([]int)
//	fmt.Println(p)  //  &[]
//
//	// 会初始化
//	// 初始化10个长度,容量为50
//	m := make([]int,10,50)
//	fmt.Println(m)  //  [0 0 0 0 0 0 0 0 0 0]
//}


//func main(){
//    //声明数组
//    var arr1 [5] int
//    arr2 := [5]int{1,2,3,4,5}
//    //可以省略大小
//    arr3 := [...]int{1,2,3,4}
//    fmt.Println(arr1,arr2,arr3)
//
//    var xx[3][2] int
//    fmt.Println(xx)
//
//	//1数组遍历
//    for i:=0 ; i<len(arr3);i++{
//    	fmt.Println(arr3[i])
//	}
//    //fmt.Println('\n')
//    for i,v := range arr3{
//    	fmt.Println(i,v)
//	}
//}


// func printArr(arr [5]int){
// 	arr[0] = 10
// 	for i,v :=range arr{
// 		fmt.Println(i,v)
//	}
// }
//func main(){
//	var arr1 [5]int
//	arr2 := [3]int{1,2,3}
//	arr3 := [...]int{2,4,6,8}
//    	fmt.Println(arr1,arr2,arr3)
//	fmt.Println()
//	printArr(arr1)
//	fmt.Println(arr1)  //值传递 [0 0 0 0 0]
//}


func printArr(arr *[5]int){
	arr[0] = 10
	for i,v :=range arr{
		fmt.Println(i,v)
	}
}
func main(){
	var arr1 [5]int
	arr2 := [3]int{1,2,3}
	arr3 := [...]int{2,4,6,8}
   	fmt.Println(arr1,arr2,arr3)
	fmt.Println()
	printArr(&arr1)
	fmt.Println(arr1)  // [10 0 0 0 0]
}

posted @ 2019-08-20 20:19  learnacode  阅读(284)  评论(0编辑  收藏  举报