DAY 98 go02

   1 go 介绍

    -部署方便---》可执行文件---》直接执行
   -静态强类型
2 开发环境搭建
-go sdk--》版本
   -ide:快速开发 goland
   -go version
   -go build
   -go run
   -go env  :gopath,goroot
3 第一个helloworld
-每一个go文件必须属于一个包  package main
   -main包下的main函数是整个项目的入口
   -fmt包下,包导入了不使用,就报错
   
4 变量命名规范
-关键字
   -保留关键字
   -变量建议驼峰,文件名建议下划线
   
5 基础数据类型
-数字(整数,无符号整型,float类型)
   -字符串("",``
   -布尔 true,false
   
6 变量定义:
-var a int =10
   -var a = 10
   -a := 10
   -变量不能重复定义,变量类型定义阶段就固定了,后期不能改
   
7 常量
-const关键字

1 函数入门

//1 基本定义函数(无参数,无返回值)
//func test() {
// fmt.Println("我是test")
//}

// 2 有参数,无返回值
//func test(a int,b int) {
//func test(a, b int) {
// fmt.Println(b)
// fmt.Println(a + b)
//}

//3 有参数,有返回值(声明返回值类型)
//func test(a,b int) int {
// return a+b
//}

//4 有多个返回值
//func test(a,b int) (int,string) {
// return a+b,"计算成功"
//}

//5 命名返回值
//func test(a,b int) (sum int,success string) {
// //var sum =a+b
// sum =a+b
// success="成功"
// return
//}

 

2 函数高级

//6 返回值是函数
// 函数是一等公民,头等函数。。   函数可以赋值给一个变量
// 匿名函数 ---》没有函数名的函数

//func test() func() {
// //a是函数类型
// var a func()
// a=func() { //匿名函数
// fmt.Println("我是匿名函数")
// }
// return a
//}

//7 返回值是复杂函数
//func test() func(a,b int){
// return func(a,b int) {
// fmt.Println(a+b)
// }
//}

//type myfunc func(a int,c int)   //重命名
//var a byte
////byte-->uint8,rune-->int32
//type myint int
//不要写出这种,只要能看懂即可
//func test() myfunc{
// return func(a int,c int) {
// fmt.Println(a)
// }
//}

// 8 闭包函数:定义在函数内部,对外部作用域有引用
// 没有装饰器的概念--》python的特殊语法

//func test(a int) func() {
// return func() {
// fmt.Println(a)
// }
//}

//9 不定长参数
//func test(a,b,c int) {
// fmt.Println(a,b,c)
//}

//func test(a... int) { //可以传任意长度的int类型
// fmt.Println(a)
//}

 

3 包

# go中所有go文件必须属于一个包,包名要一致,一般以文件夹名命名
# 定义自己的包,新建一个文件夹,内建s1.go,s2.go
##### s1.go
package package01
import "fmt"
var A string="lqz"
// 小写表示只在包内部使用,包私有,
//大写开头表示公有,可以被外部包使用
func Test() {
//调用add ,由于在一个包下,直接使用即可,不需要导入
res:=Add(9,5)
fmt.Println(res)
fmt.Println("我是package01包的test")
}

####s2.go
package package01
func Add(a,b int) int {
return a+b
}


###在其他包内使用
package main

import (
"day02/package01"
"fmt"
)
//包的使用
func main() {
//包名.函数名  使用
package01.Test()
fmt.Println(package01.A)

}

4 if-else

package main

import "fmt"

// if-else
func main() {
//var a = 10
//if 条件{
// 符合条件执行这个代码
//}else 条件{
// 符合条件执行
//}else{
// 执行这个代码
//}
//if a > 10 {
// fmt.Println("大于10");
//} else if a < 10 {
// fmt.Println("小于10");
//} else {
// fmt.Println("等于10")
//}
if b:=90;b==90{
fmt.Println("90")
}
}

5 循环

package main

// 循环 :只有for,没有while关键字,通过for实现while循环
// 语法
//for 变量初始;条件;变量的自增/自减{
// 循环体内容
//}

func main() {
//1 循环把0--9打印出来
//for i:=0;i<10;i++ {
// fmt.Println(i)
//}
//var i =99
//fmt.Println(i)

//2 省略第一部分(区别在i的作用于范围不一样)
//i:=0
//for ;i<10;i++ {
// fmt.Println(i)
//}
//fmt.Println(i)

//3 省略第三部分
//i := 0
//for ; i < 10; {
// fmt.Println(i)
// i++
//}

// 4 省略分号(for 条件{}---->while循环)
//i := 0
//for i < 10 {
// fmt.Println(i)
// i++
//}

//5 for true {}
//for true {
// fmt.Println("死循环")
//}

//6 for {}  死循环
//for {
// fmt.Println("死循环")
//}

// 基于索引的循环

//基于迭代的循环
//var s ="lqz"
//for i,v:=range s{
// fmt.Println(i)
// fmt.Println(v)
//}

// continue break  任何语言都一样

}

 

6 switch

package main

import "fmt"

// switch:多分支,为了优雅的替换if-else

func main() {
//1 基本使用
//var a=1
//switch a {
//case 1:
// fmt.Println("1111")
//case 2:
// fmt.Println("222")
//case 10:
// fmt.Println("10--10--10")
//}

//2 多表达式判断
//var a=90
//switch a {
//case 1,2,3,4:
// fmt.Println("1111")
//case 5,6,7,8:
// fmt.Println("222")
//case 9,10:
// fmt.Println("10--10--10")
//default: //上面都不符合,执行下面
// fmt.Println("我不知道是多少")
//}

//3 无表达式
//var a = 9
//switch {
//case a == 1, a == 2:
// fmt.Println("1111")
//case a == 8, a == 9:
// fmt.Println("222")
//case a == 9:
// fmt.Println("10--10--10")
//default: //上面都不符合,执行下面
// fmt.Println("我不知道是多少")
//}

//4 Fallthrough (穿透)

var a=3
switch a {
case 1,2,3,4:
fmt.Println("1111")
//fallthrough  //只要遇到fallthrough,就无条件执行下一个case
case 5,6,7,8:
fmt.Println("222")
fallthrough
case 9,10:
fmt.Println("10--10--10")
fallthrough
default: //上面都不符合,执行下面
fmt.Println("我不知道是多少")
}

}


// goto:关键字,有用,只了解,不用去看
原文地址:https://www.cnblogs.com/DEJAVU888/p/14894220.html