首页 > 其他分享 >第十篇: GO-包、go mod、if-else语句、switch语句

第十篇: GO-包、go mod、if-else语句、switch语句

时间:2022-10-03 03:55:26浏览次数:39  
标签:语句 10 fmt 第十篇 else Println case go mod

Go mod

语法

module my/thing

go 1.13.4

require (
new/thing v2.3.4
old/thing v1.2.3
)
1.module:指明根目录

2.go 后面跟版本号是指定go的版本

2.require是个动作指令,对依赖包起作用,比如require(依赖),还有exclude(排除),replace(替代),相同动作的可以放在一个动词+括号组成的结构中,如下:

require (
new/thing v2.3.4
old/thing v1.2.3
)

require new/thing v2.3.4
require old/thing v1.2.3

// 排除
exclude old/thing v1.2.3

// 替换,使用箭头后的替换前面的
replace bad/thing v1.4.5 => good/thing v1.4.5


注意:
exclude和replace仅适用于主的go.mod文件中,其他的依赖中会被忽略、
可以使用replace替换无法获取的库,
比如golang.org/x/crypto replace为github.com.com/golang/crypto
3.注释:使用//,没有/* xxx */这种块注释

命令

go mod help 查看帮助

1.开启mod:go env -w GO111MODULE=on,会将包下载到gopath下的pkg下的mod文件夹中
2.关闭mod:go env -w GO111MODULE=off,会将包下载到gopath下的src下
3.go env GO111MODULE=auto,只有当当前目录在GOPATH/src目录之外而且当前目录包含go.mod文件或者其子目录包含go.mod文件才会启用。

go mod download 下载模块到本地缓存,go env中的GOCACHE路径,可以通过go clean -cache清空缓存
多个项目可以共享缓存的包
go mod edit 在工具或脚本中编辑go.mod文件
go mod graph 打印模块需求图
go mod init 在当前目录下初始化新的模块
go mod init 【项目名】 默认使用当前路径的项目名称
go mod tidy 添加缺失的模块以及移除无用的模块,生成go.sum文件
go mod vendor 会自动下载项目中依赖的包到项目根目录下的vendor文件夹下,并写入go.mod文件,同时生成
modules.txt文件
go mod vender -v

go mod verify 检查当前模块的依赖是否全部下载下来,是否下载下来被修改过
go mod why 解释为什么需要包或模块


注意:-v参数可以查看执行的详细信息

//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("不知道")
	}
}

标签:语句,10,fmt,第十篇,else,Println,case,go,mod
From: https://www.cnblogs.com/l-uz/p/16749904.html

相关文章

  • java学习之:类和对象、语句块、方法、递归结构!
    语句块和方法语句块语句块确定了局部变量的作用域。语句块嵌套,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用语句块外的变量,语句块中定义的变量作用域只限于语句......
  • 【C语言_11】快速了解switch多重选择语句!
    1.switch的用法switch后面的括号只能填整型表达式case后面的常量不能有重复的可以没有defaultswitch(整型表达式){case整型常量1:语句;case整型常量2:......
  • SQL中GROUP BY语句介绍
    本文主要介绍SQL(StructuredQueryLanguage)中GROUPBY语句的相关知识,同时通过用法示例介绍GROUPBY语句的常见用法。1概述GROUPBY语句通常用于配合聚合函数(如COUNT......
  • C语言中的循环语句要点
    C语言中循环语句主要有三种:while;for;dowhile。1.while循环​​//while语法结构​​​​while(表达式)​​​​{​​​​循环语句;​​​​}​​1.1while语句中的break......
  • mysql基础(二):select语句
    SQL分类SQL语言在功能上主要分为如下3大类:DDL(DataDefinitionLanguages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除......
  • 连续的if语句评判身材(粗略,单从体重来说)
    #include<stdio.h>intmain(){ intm2,m1,s; printf("本系统将会根据你的性别和年龄对你的身材进行评判\n请输入你的性别s(男-1,女-2):"); scanf_s("%d",&s); if(s......
  • SQL 循环语句几种写法
    摘自:https://www.cnblogs.com/guorongtao/p/11939751.html1、正常循环语句declare@orderNumvarchar(255)createtable#ttableName(idintidentity(1,1),Ordersvar......
  • mysql安全基础(1)常见语句
    上一篇: docker安装和登陆mysql发现用docker安装mysql非常简洁方便快速,继续学习。1.查看当前数据库排行榜可以通过当前数据库使用排行榜:db-engines.comThemostpopula......
  • python else的小九九
    else是python语言中活生生的备胎,谁都是想用就用,不用也行。1.ifelse语句常规的if...else语句我就不过多赘述了,这里提一下三元表达式,可以有效减少代码量,使代码的整体......
  • MySQL--SQL基础语句--2022年9月28日
    第一节  数据库相关概念 第二节  MySQL安装及启动1、MySQL安装及启动自行查看文档,这里不多笔记2、关系型数据库是什么 3、数......