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