• Go-环境搭建-hello world-变量常量定义-函数使用基础


    编程语言科普

    go 语言是

    • 编译型语言
    • 静态强类型语言(强类型:类型固定)
    • 跨平台的编译型语言

    常见语言的背景

    GO:2009年11月出的(Google 出的)

    python:1989年出的

    java:1990年出的

    c#:微软

    java:sun公司(后来被甲骨文收购了)

    -c开发:在windows上开发,编译好的只能在windows上用
    -java横空出世:跨平台,一处编码到处运行
        -运行在java虚拟机之上
        -编译成字节码文件:中间态
    -go:跨平台编译
        -在windows平台可以编译出linux下的可执行文件
    
    -java概念普及:
        -jdk:开发人员需要装jdk
        -jre:运行java程序,需要装
        -jvm:java虚拟机
        -javase:java基础,安卓方向
        -javaee:javaweb方向
            -ssh框架:spring  structs  Hibernate
            -ssm框架:spring  springmvc  mybatis
            -spring全家桶
                -springboot:一站式搞定
                -springclode:微服务开发
        -javame:手机端开发
        -大数据:
    

    go 为什么这么火?

    -docker容器化部署、devops 比较火
    -k8s 是用go写的:容器编排
    -在区块链领域:第一个开源的区块链项目是用go写的
    -性能高,特别适合服务端开发
    -部署容易
    

    环境搭建(很重要)

    官网下载安装包,图形化一步步安装(非常简单)

    命令

    1)go version 查看 go 版本

    2)go env 查看 go 的配置

    • GOPATH=C:UsersAdministratorgo go 代码的存放路径(可以改,环境变量里)(代码必须放在 GOPATH 对应的路径下)

      下载的第三方包是默认放在 GOPATH 路径下的

    • GOROOT=E:Go go 的路径,如果没有配置,内置包可能就用不了

      导包的时候,查找路径:先去 goroot 中找,然后去 gopath 中找,再找不到,否则报错(所以自己写的包必须放在 gopath 里面,不然找不到)

    ide 编辑器

    • GoLand (jetbrians)
    • sublime
    • vscode
    • liteIDE

    补充:

    主流的 IDE (集成开发环境)

    jetbrains 全家桶(差不多把市面上所有编程语言的开发工具都写了一遍)

    可以用 pycharm 的激活码激活(一家的激活码是通用的)

    注释

    //单行注释
    
    /*
    多行注释
    多行注释
    */
    

    第一个程序 Hello world!

    first.go

    package main  // 表示当前 go 文件属于哪个包(main)
    // 且必须放在第一行(注释除外)
    
    import "fmt"
    
    // 编译型语言需要有一个入口文件: main 包下的 main 函数
    func main() { //定义了一个main函数
    	fmt.Println("Hello world!")  // 打印 Hello world!
    }
    

    编译与执行

    • 编译、执行(命令行)

      go build first.go(文件名)

      first.exe (windows 平台生成的运行文件)

    • 编译并执行(不生成对应平台的运行文件)

      go run first.go(文件名)

    变量类型

    关键字 var

    package main //表示是main包的
    import "fmt"
    
    func main() {
        // 三种定义方式(变量不能重复定义)
        // var关键字 变量名 变量类型 = 值
        var a int =10  //定义了一个int类型的变量a ,并把10赋值给它
        var b = 10  // 变量会自动推导类型
        c := 10  // 变量会自动推导类型(最简短的写法)
    	
        // 定义的时候可以不赋初值
        // int 类型默认值为 0 :var a int
        // string 类型默认值为 "" :var s string
        // 布尔类型默认值为 false :var b bool
        
    	//同时定义多个变量
    	var a = 10
    	var b = 100
    	var a, b int
    	var a, b int = 10, 20
    	var a, b = 10, 20
    	var a, b = 10, "lqz"
    	a, b := 10, 20
    	a,b := 10,"lqz"
    	fmt.Println(a)
    	fmt.Println(b)
        
        var (
    		name   = "naveen"
    		age    = 29
    		height int
    	)
    	fmt.Println(name)
    	fmt.Println(age)
    	fmt.Println(height)
    	//naveen
    	//29
    	//0
    }
    
    • 变量不管用不用,都必须先指定类型(或者有值了让它自己推导)
    • 变量类型一旦定义了,后续不可更改(强类型语言,类型是固定的)

    数字类型

    /*
    	int类型:表示整数,int8   int16  int32  int64
    	计算机最小计量单位:bit位  int8 是 8个比特位=1个字节,表示的范围是:正负2的7次方减1
    	在32位机器上int 就是int32 ,在64位机器上int就是int64
    	
    	uint类型:表示正整数 uint8 uint16...
    	
    	float类型:表示小数只有float32和float64
    	
    	complex64类型:复数
    	
    	byte: uint8的别名
    	
    	rune:int32的别名
    */
    

    字符串类型

    s := "123"  // 只能用双引号引起来,单引号不行
    s2 := `这是一个
    可以换行
    的字符串`  // 也可以用反引号包起来,反引号内的字符串可以换行
    

    布尔类型

    isnull := false  // go 中的布尔类型都是小写的,与python不同
    

    常量

    关键字 const

    const a = 10  // 也可以类型推导
    const b = "127.0.0.1"
    

    函数

    关键字 func

    可以用 _ 接收不要的返回值,

    //函数定义,语法
    //func关键字 函数名(参数1 类型,参数2 类型) (返回值类型){}
    //无参数,无返回值
    func test()  {
    	fmt.Println("xxx")
    }
    //有两个int类型的参数
    // func test(a int,b int)  {  // 可简写成下面的
    func test(a ,b int)  {
    	fmt.Println(a+b)
    }
    
    //有一个数字类型返回值,一定要指定返回值类型
    func test(a,b int) int {
        return a+b
    }
    
    func test(a,b int) string {
    	return "lqz"
    }
    
    //返回多个值
    func test(a,b int) (int,string)  {
    	return a+b, "成功"
    }
    
    //命名返回值
    func test(a,b int) (c int, d string)  {
    	c=10
    	d="成功"
    	return  // 在函数定义时指定的返回值会自动返回,不需要 return 的时候再写一遍
    }
    
    //在go中没有位置参数和关键字参数,都是位置参数,也没有默认参数
    func test(a,b int) int {
    	return a+b
    }
    
    //不定长参数 "..."
    func test(a ...interface{})  {  // interface{} 这是个特殊情况,可以接收所有类型的参数
    	fmt.Println(a)
    }
    
    

    1)命名返回值(函数返回值定义那里),定义了就直接可以用了(不需要再在函数体里定义),也不需要再指定把它传出去(会自动把它一并 return 出去)

    2)在 go 中没有位置参数和关键字参数这么一出,都是位置参数,也没有默认参数

    课后作业

    1. 搭建go语言环境,并打印helloworld
    2. 定义一个函数,输入一个三位数数字,返回两个返回值:每一位的平方、每一位的立方和 (例如345 返回3的平方+4的平方+5的平方 ,3的立方+4的立方+5的立方)
    3. 给上面的函数加入时间统计(time模块)
      进阶
      1. 写一个函数,返回函数类型
      2. 写一个函数,实现统计函数执行时间功能
  • 相关阅读:
    电子公文传输系统个人贡献
    第十三章学习笔记
    第十二章学习笔记
    第14章学习笔记
    团队作业(五):冲刺总结
    冲刺总结(day7)
    thread同步测试
    冲刺总结(day1)
    元宇宙、VR(Unity3D、Unreal4)、AR、WPF&H5外包团队—北京动点飞扬软件新办公室照片
    kanzi外包团队:长年承接kanzi项目应用开发 Kanzi 3.6 LTS已经更新至3.6.3版!
  • 原文地址:https://www.cnblogs.com/suwanbin/p/12017131.html
Copyright © 2020-2023  润新知