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]
}

转载于:https://www.cnblogs.com/Doner/p/11385348.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值