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"