zoukankan      html  css  js  c++  java
  • GO语言二

    1 函数

    package main
    
    //函数
    
    
    //这个位置不能写逻辑代码,只能变量和常量的定义
    //fmt.Println("xxx")
    //var a =10
    //const name  = "lqz"
    
    
    func main() {
    	//test()
    
    	//test(1,2)
    
    	//test(1,2,"xx")
    
    	//var a int=test(3,4)
    	////var a =test(2,3)
    	////a :=test(2,3)
    	//fmt.Println(a)
    
    	//python中可以用一个值来接收,go不允许,返回几个值,就用几个值来接收
    	//var a,b int
    	//a,b =test(2,3)
    	//fmt.Println(a)
    	//fmt.Println(b)
    	//a,b,c :=test(2,3)
    	//忽略掉b,不接收了  _  下划线  (跟python不一样,python中_也是一个变量,go中没有就是没有)
    	//a,_,c :=test(2,3)
    	//fmt.Println(a,c)   //Println这个函数可以接收任意长度的参数
    	//fmt.Println(_)
    
    	//test(1,2,3,4,5,6,6,7,8,9,90,0)
    
    	//test(1,"lqz")
    
    	//test()
    	
    	//定义一个a 是 函数类型
    	//var a func()= test()
    	//a()
    
    	//a:=test(2,3)
    	//
    	//a()  //闭包函数不需要再传参,它引用了外部作用域的参数
    
    	//var a Myfunc =test(1,2)
    
    	//var a =test()
    	//fmt.Printf(a)
    
    }
    
    //0 函数定义格式
    /*
    func关键字 函数名(参数1 类型,参数2 类型){
    	函数体内容
    }
    */
    //1 函数基本定义(放在main前后都可以)
    //func test()  {
    //	fmt.Println("我是函数test")
    //}
    
    ////2 带参数的函数
    //func test(a int,b int)  {
    //	fmt.Println(a+b)
    //}
    
    //2 带参数的函数,两个参数类型相同,可以省略
    //func test(a ,b int)  {
    //func test(a ,b int,c string)  {   //a,b是int, c是string
    //	fmt.Println(a+b)
    //}
    
    //3 带返回值(需要指定返回值类型是什么)
    //func test(a ,b int) int {
    //	return a+b
    //}
    
    //4 多返回值(python中可以),返回两个int类型
    //func test(a ,b int) (int,int) {
    //func test(a ,b int) (int,int,string) {
    //	return a+b,a*b,"ok"
    //}
    
    //5 可变长,接收任意长度的参数
    
    //func test(a ...int){
    //	fmt.Println(a)
    //}
    
    //6 go中只有位置参数,没有关键字参数一说,没有默认参数
    
    //func test(a int,b string)  {
    //	fmt.Println(a)
    //	fmt.Println(b)
    //}
    
    //7 匿名函数(没有名字的函数),一定要定义在函数内部
    
    //func test()  {
    //	//匿名函数直接加括号
    //	//func (){
    //	//	fmt.Println("我是匿名函数")
    //	//}()
    //	//赋值给一个变量
    //	var a func()
    //	
    //	a =func (){
    //		fmt.Println("我是匿名函数")
    //	}
    //	a()
    //	//a是个什么类型
    //	fmt.Printf("%T",a)
    //
    //}
    
    //8 函数这个类型,它的参数,返回值,都是类型的一部分
    //var a func()
    //var b func(a,b int)
    //var c func(a,b int)int
    //var d func(a,b int)(int,string)
    
    
    
    
    //8 闭包  ---》  1 定义在函数内部 2 对外部作用域有引用
    
    //func test() func() {
    //	//只是一个内层函数
    //	a:= func() {
    //		fmt.Printf("我是内层函数")
    //	}
    //	return a
    //}d
    // 如果内层函数有参数
    //func test() func(x,y int)string {
    //	//只是一个内层函数
    //	a:= func(x,y int)string {
    //		fmt.Printf("我是内层函数")
    //		return "我是内层函数的返回值"
    //	}
    //	return a
    //}
    
    //闭包函数,闭包函数,就是多了一种函数传参的方式
    //go中没有装饰器语法糖,用go实现装饰器
    
    //func test(x,y int) func() {
    //	//只是一个内层函数
    //	a:= func() {
    //		fmt.Println(x+y)
    //	}
    //	return a
    //}
    
    //给 函数类型 重命名
    //type Myfunc  func(z int)int
    //
    ////func test(x,y int) func(z int)int {
    //func test(x,y int) Myfunc {
    //	//只是一个内层函数
    //	a:= func(z int)int {
    //		fmt.Println(x+y+z)
    //		return x+y+z
    //	}
    //	return a
    //}
    
    //返回值默认值
    //func test()(a int,b string)  {
    //	//a和b不需要定义,直接使用
    //	//return的时候,不需要指定了
    //	a=0
    //	b="ok"
    //	return
    //}
    //func test()(int,string)  {
    //	a:=0
    //	b:="ok"
    //	return a,b
    //}
    
    //func test()  {
    //	//这样写,有没有返回值
    //	return
    //	fmt.Printf("xxx")
    //}
    

    3 包

    package main
    
    import "s12_day02/mypacakge"  //导包的时候,是从gopath的src路径下开始导
    import "fmt"
    
    //包
    //同一个文件夹下只能有一个包,也就是package 后面的名字都要一致
    //默认就跟文件夹名字一样即可
    //同一个包下有两个名字相同的函数是不行的
    
    //使用包,需要导入
    
    func main() {
    	mypackage.MyPackageTest()
    	//以大写字母开头表示导出(外部包可以使用),小写字母开头,外部包不能使用,只能再包内部适应
    	mypackage.test()
    	fmt.Println("xxx")
    }
    
    //总结:
    	1 新建一个文件夹(包),包下新建任意多个go文件,但是包名都必须一致(建议就用文件夹名)
    	2 在包内定义的函数,大写字母开头,表示外部包可以使用,小写字母开头,表示只能再内部使用,直接使用即可
      3 在其他包中使用,要先导入(goland有自动提示)
    		-import "s12_day02/mypacakge"
    		-包名.函数()
    	4 公有和私有 就是大小写区分的
    	5 所有的包必须在gopath的src路径下,否则找不到
    
    // 类似于python中的包 包名叫 lqz   文件夹下有个__init__.py
    	__init__.py 写 文件夹下py文件
    import lqz
    lqz.能点出来的都在__init__.py中注册过
    //go 中 包名.函数名,只要是大写开头的,都能点出来
    
    

    4 if-else语句

    package main
    
    import "fmt"
    
    //if else
    
    func main() {
    	//1 语法
    	/*
    	if 条件 {
    		//符合上面条件的执行
    	}
    	else if 条件{
    		//符合上面条件的执行
    	}else {
    		// 不符合上面的条件执行这个
    	}
    	*/
    
    	//var a =10
    	//if a<9{
    	//	fmt.Println("小于9")
    	//}else if a==10{
    	//	fmt.Println("10")
    	//}else {
    	//	fmt.Println("都不符合")
    	//}
    	//作用域范围不一样
    	if a:=10;a<9{
    		fmt.Println("小于9")
    	}else if a==10{
    		fmt.Println("10")
    	}else {
    		fmt.Println("都不符合")
    	}
    
    
    }
    
    

    5 循环

    package main
    
    //循环:go中,没有while循环,只有一个for循环,for可以替代掉while
    
    func main() {
    	//1 语法,三部分都可以省略
    	/*
    	for关键字 初始化;条件;自增自减{
    		循环体的内容
    	}
    	 */
    	//2 示例 从0 打印到9
    	//for i:=0;i<10;i++{
    	//	fmt.Println(i)
    	//}
    	//3 省略第一部分  从0 打印到9,把i的定义放在for外面
    	//i:=0
    	//for ;i<10;i++{
    	//	fmt.Println(i)
    	//}
    
    	//4  省略第三部分
    	//i:=0
    	//for ;i<10;{
    	//	fmt.Println(i)
    	//	i++
    	//}
    
    	//5 第二部分省略,条件没了,死循环
    	//i:=0
    	//for ;;{
    	//	fmt.Println(i)
    	//	i++
    	//}
    
    	//6 全省略的简略写法,死循环
    	//for {
    	//	fmt.Println("xxxx")
    	//}
    
    	//7 第一部分和第三部分都省略的变形
    	//i:=0
    	//for i<10 {
    	//	fmt.Println(i)
    	//	i++
    	//}
    	//for 条件{  就是while循环
    	//
    	//}
    
    	//8 break continue:任何语言都一样
    
    
    	// python  垃圾回收 --》同一时刻其实只有一个线程在执行  单核的时候  出现了多核
    	// 多进程 开进程
    
    }
    
  • 相关阅读:
    (参考)爬虫5-爬取中国大学排名情况
    005_软件安装之_常用办公软件
    004_软件安装之_Altium Designer
    001_基础硬件电路_二极管
    添加QQ群
    024_STM32程序移植之_ESP8266_TCP
    020_C语言常用函数
    004——转载C#禁止改变窗体大小
    003转载----C#打开网页
    002_Python基础学习网站
  • 原文地址:https://www.cnblogs.com/mqhpy/p/12600552.html
Copyright © 2011-2022 走看看