//1 在同一个包下(文件夹下),包名必须一致
//2 以后,包名就是文件夹的名字
//3 同一个包下,同名函数只能有一个(init除外)
//4 一个包(当成一个文件),同一包下的函数,直接调用即可
//5 导包的位置,从src路径开始
//6 包只要在src路径下就可以导入
//7 大写表示导出,在外部包可以使用,小写只能在包内部适应
//8 使用第三方包:go get github.com/astaxie/beego  (放到gopath的src路径下)
	-python:pip3 install requests
    package main
    import "github.com/astaxie/beego"

    func main() {
      beego.Run()
    }

mode模式

//1 包导入 import . "github.com/astaxie/beego"  类似于python中form xx import *
//2 包导入 import _ "github.com/go-sql-driver/mysql"  触发init的执行,但是不试用包内的函数
//3 包导入 import f "fmt"   重命名,以后直接用f

//4 对比python中__init__.py  
//在代码中导入模块
import xx   实质上触发__init__.py  的执行(在__init__.py中也可以执行其他代码,对应到go中就是init函数)
一般情况下,在__init__.py写from xx import 会使用到的函数,导过来
以后再用 xx.函数()

//5 go mod没有之前,可以设置多个gopath,开发某个项目,切到不同的gopath,类似于虚拟环境

//6 go env
	-GO111MODULE="off"  表示go mod模式是关闭的,用gopath
	-一旦开启了go mod模式,代码不需要放在src路径下(任意位置都可以)
	-在项目路径下要有 go.mod 文件(文件里记录了,go版本,项目依赖的包,包的版本)
	-写代码,建自己的包即可
	-一般情况下,项目有一个main.go  内部是main包,main函数,整个程序的入口

if-else语句

//if-else
package main

import "fmt"

func main() {
	//a:=9
	//1 基本使用
	if a>10{
		fmt.Println("大于10")
	}else {
		fmt.Println("小于等于10")
	}

	//2 if -else if -else
	if a>10{
		fmt.Println("大于10")
	}else if a==10 {
		fmt.Println("等于10")
	}else {
		fmt.Println("小于10")
	}

	//3 不能换行(go语言每一行结尾,需要加一个;  ,每当换行,会自动加;)
	if a>10{
		fmt.Println("大于10")
	}else if a==10 {
		fmt.Println("等于10")
	}else
	{
		fmt.Println("小于10")
	//}

	//4 条件里可以进行初始化操作(有作用域范围的区别)
	a:=10;
	if a<10{
	if a:=10;a<10{
		fmt.Println("xxx")
	}else {
		fmt.Println("yyyy")
	}
	fmt.Println(a)

	fmt.Println(a)
}

循环

//循环(只有for循环,没有while ,do while)
package main

import "fmt"

func main() {
	//1 基本语法
	//for 初始化;条件判断;自增/自减{ 循环体内容  }    三部分都可以省略
	//打印0--9
	for i:=0;i<10 ;i++  {
		fmt.Println(i)
	}

	//2 省略第一部分(初始化),作用域范围不一样
	i:=0
	for ;i<10 ; i++ {
		fmt.Println(i)
	}

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

	//4 省略第一和第三部分
	i := 0
	for ; i < 10; {
		i++
		fmt.Println(i)
	}
	
	//5 这不就是while循环吗?
	for 条件 {}
	i := 0
	for i < 10 {
		i++
		fmt.Println(i)
	}
	for true{
		fmt.Println(1)
	}

	//6 死循环(三部分都省略)
	for {
		fmt.Println(1)
	}

	//7 break和continue(和python一样)
	for {
		fmt.Println(1)
		//break
		continue
	}
}

switch语句

//switch
package main

import "fmt"

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

	//2 default
	a:=15
	switch a {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println(2)
	case 9:
		fmt.Println(9)
	case 10:
		fmt.Println("10")
	default:
		fmt.Println("不知道")
	}

	//3 多条件
	a:=3
	switch a {
	case 1,2,3:
		fmt.Println("1")
	case 4,5,6:
		fmt.Println(2)
	case 7,9:
		fmt.Println(9)
	case 10,16:
		fmt.Println("10")
	default:
		fmt.Println("不知道")
	}


	//4 无表达式
	a:=3
	switch  {
	case a==1 || a==3:
		fmt.Println("1")
	case a==4||a==5:
		fmt.Println(2)
	default:
		fmt.Println("不知道")
	}

	//5 fallthrough,无条件执行下一个case
	a:=1
	switch  {
	case a==1 || a==3:
		fmt.Println("1")
		//fallthrough  //fallthrough 会无条件执行下一个case
	case a==4||a==5:
		fmt.Println(2)
		fallthrough
	default:
		fmt.Println("不知道")
	}
}

版权声明:本文为guyouyin123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guyouyin123/p/12747421.html