zoukankan      html  css  js  c++  java
  • go语言

    1.go语言介绍

    2.开发环境搭建

    3.我的第一个hello world

    4.变量的定义

    5.变量类型

    6.常量

    7.函数基础

    8.函数一定是公民(先了解一下的)

    一.go语言介绍

    go是什么:

    Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言。
    Go是静态强类型语言,是区别于解析型语言的编译型语言。
    
    解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。
    编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行。

    go语言的特性:

    跨平台的编译型语言
    语法接近C语言
    管道(channel),切片(slice),并发(routine)
    有垃圾回收的机制
    支持面向对象和面向过程的编程模式
    go语言介绍:
    python,php,js
    c,c+,c#:微软,java:sun公司,后来被甲骨文收购了,go:谷歌
    go语言发展:Google
    2019年11月出的,python:1989年 java:1990
    Go是静态强类型语言:强类型:类型固定
    那么go语言为什么这么火?
        docker容器化 devops比较火
        k8s go写的:容器编排
        区块链:第一个开源的区块链项目是用go写的
        性能高,特别适合服务端开发
        部署容易

    补充跨平台的编译型语言:
    c开发:在windows上开发,编译好的只能在windows上用
    java横空出世:跨平台,一处编码到处运行
        运行在java虚拟机之上
        编译成字节码文件:中间态
    go:跨平台编译
        在windows平台可以编译出linux下的可执行文件

    以下是补充内容:
    1.定义在函数内部,对外部作用域有引用 2.编译型: 不依赖语言环境运行
    解释型: 需要解释器,缺点是执行速度慢 python,js c,java,go
    3.比特位: 8bit = 1bytes( b) 1024b = 1kb 1024b = 1m 1024m = 1g

    二.开发环境搭建

    开发环境搭建:
    go开发环境:gol.13.5.windows-amd64
    下载地址:https://golang.google.cn/dl/
    安装完以后可以在cmd里面输入go version 查看go版本
    环境变量会自动配置的
    go env 配置得到环境变量代表着什么意思:
      GOPATH = C:Useroldboygo go的代码必须放这个路径下,你要是不放的话需要改路径
      GOROOT = c:go go的安装路径
      
    go ide: goland-2019.3.exe

    补充:
      主流的ide(集成开发工具)
        pycharm
        idea/my eclipse:java web,收费 /eclipse:免费
        goland
        vs code:开发java,微软出的
        datagrip:数据库操作相关
        jetbrains 全家桶,他把市面上所有的编程语言的开发工具都写了一遍 (推荐都是用这个,因为开发工具都是用一套的,使用起来差不多)

    三.我的第一个hello world

    因为goland是编译型语言,如果先编译在执行,该怎么写,如果想把代码给别人的话,可以直接把编译好得到可执行文件给别人
    在黑终端上:
        go build 文件名     这是编译
        文件名执行
    编译并执行:因为开开发阶段,不需要生成文件给别人
    go run s1.go

    在go的开发者工具上就不需要了,可以直接鼠标右键run执行

    // 单行注释
    /*
    多行注释
    多行注释
        */
    package main // 表示当前go文件属于main包
    import "fmt" // 导入fmt包
    
    // 编译型语言需要有一个入口文件,main包下的main函数
    func main(){ // 定义了一个main函数
        fmt.Println("hello word") // 打印hello word
    }

    四.变量的定义

    总结:

    // 定义变量 有三种方式
        // 注意:在go语言中定义的变量必须使用,不然会报错
            //var关键字 变量名 变量类型 =//方式一:全名称
            var a int=10
        
            // 方式二:类型推导,就是会自动预判你的变量类型
            var a = 10
    
            // 方式三:简易方式
            a:=10   比较常用的
    
    注意:
    1.变量一定不能重复定义
    2.值的类型固定住了,就不能改了比如说我 var a = 10  这就是int类型,就不能用 a= "zy"字符串了。
    3.定义不赋初值 :int 类型默认值是0  string类型默认值是空字符串
    4.同时定义多个变量可以这样写:var a,b = 10,"zy"  记住要用双引号
    // 变量
    package main // 表示是main包
    import "fmt"
    
    func main() {
        // 定义变量 有三种方式
        // 注意:在go语言中定义的变量必须使用,不然会报错
        //方式一:全名称
        //var关键字 变量名 变量类型 = 值
        var a int=10  //定义一个init类型的变量a,把10赋值给他
        fmt.Println(a)
        // 方式二:类型推导,就是会自动预判你的变量类型
        var a = 10
        fmt.Println(a)
        // 方式三:简易方式
        a:= 10
        fmt.Println(a)
        // 变量不能重复定义
        var a int = 10
        a:= 10  // 变量重复了
        fmt.Println(a)
        fmt.Println(a)
        // 强类型语言 ,就是类型固定就不能改了
        var a = 10
        a = 100
        //a = "zy" // 因为在初始阶段已经推导为int类型,所以就不能改变了
        b:="zy" // 可以这么写,重新定义一个变量
        fmt.Println(a)
        fmt.Println(b)
        // 定义不赋初值 :int 类型默认值是0  string类型默认值是空字符串
        var a int
        fmt.Println(a)
        var b string
        b = "zy"
        fmt.Println(b)
        // 同时定义多个变量
        var a = 10
        var b = 100 // 这样写太麻烦了
        var a,b int=10,20
        fmt.Println(a)
        fmt.Println(b)
        var a,b =10,"zy" // 注意这里必须使用双引号
        fmt.Println(a)
        fmt.Println(b)
        // 这种了解就可以了
        var(
            name = "zy"
            age = 29
            height int
        )
        fmt.Println(name)
        fmt.Println(age)
        fmt.Println(height)
    
    
    }
    
    

    五.变量类型

    补充:

        /*
            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的别名
        *
    //变量类型
    package main
    
    import "fmt"
    
    func main() {
        // bool类型 0值是false
        var b bool = true
        var b = true
        b:=true
        var b bool  // 0值就是false
        fmt.Println(b)
    
        // int 类型
        var a int = -10
        fmt.Println(a)
        var a int = 100000
        fmt.Println(a)
        var a uint8 = 100
        fmt.Println(a)
        //浮点型
        var a float32 = 2.33
        fmt.Println(a)
        // 字符串(必须用双引号),反引号是python中的三引号,可以换行
        //b:='a'
        //fmt.Println("%T",b)
        //var a string = "zy"
    //    var c string=`dsjasld
    //adasdasdasd
    //
    //dasdddewed
    //sdasd`
    //fmt.Println(c)
    var c string = "dasd" + // 看着像是换行了,实际上并没有换行
        "dasd" +
        "ad" +
        "ad" +
        "as" +
        "d"
    fmt.Println(c)
    }

    六.常量

    //常量:恒定不变的量
    // const 就是定义常量的关键字
    package main
    import "fmt"
    func main() {
        //var a int=10
        //定义了一个常量a
        //const a int=10
        const a =10
        //a=100
        fmt.Println(a)
        const b ="192.168.1.1"
    
    }
    那么有什么用了,比如说用在数据库当中,声明

    七.函数基础

    // 函数
    package main
    
    import "fmt"
    
    //func main() {
        //test()
        //test(1,2,"dja")
        //var a int = test(1,2) // 太麻烦了
        //a:= test(1,2) //这种方式用的比较多一点
        //fmt.Println(a)
        //a:= test("1","1")
        //fmt.Println(a)
    
        //a,_:=test(1,2)
        //// 不要第二个返回值了
        //fmt.Println(a)
        ////fmt.Println(b)
    
        //a:=test()
        //fmt.Println(a)
        //a:=test(
        //test(1,1,2,"dasdsd",2,3,2)
    
    
    
    //}
    
    // 函数定义,语法
    // func关键字 函数名(参数1 类型,参数2 类型) (返回值类型){}
    // 1.无参函数,无返回值
    //func test(){
    //    fmt.Println("zy")
    //}
    //2.有两个int类型的参数
    //func test(a int,b int){
    //func test(a ,b int){
    //func test(a ,b int,c string){
    //
    //    fmt.Println(a+b,c)
    //}
    //3.有一个数字类型返回值,一定要指定返回值类型
    //func test(a ,b int) int {
    //    return a+b
    //}
    // 返回一个字符串类型
    //func test(a ,b string) string {
    //    return "sadas"
    //}
    // 4.返回多个值
    //func test(a,b int)(int,string){
    //    return a+b,"成功"
    //}
    //5.命名返回值(了解,就用没有命名也可以)
    //func test(a,b int)(c int,d string){
    //    c = 10
    //    d="成功"
    //    return
    //}
    
    //6.在go当中没有位置参数和关键字参数,都是位置参数,也没有默认值参数
    //func test(a,b int) int {
    //    return a+b
    //}
    
    // 不定长参数 interface:接受任意类型
    //func test(a ...interface{}){
    //    fmt.Println(a)
    //}

    八.函数一定是公民(先了解一下的)

    // 先了解一下
    // 闭包函数
    // 定义在函数内部,对外部作用域有引用
    // go语言中,函数是一等公民,可以把函数赋值给一个变量,函数就是一等公民
    
    func test(a int) (int,int) {
        fmt.Println("xxx")
        return 1,2
    
    }
    
    func main() {
        var a func(a int) (int,int)
        //var a = test
        //a:=test
        a = test
        a(1)
    }
  • 相关阅读:
    【P2236】彩票(搜索+剪枝)
    【P1714】切蛋糕(单调队列)
    【P1886】滑动窗口(单调队列→线段树→LCT)
    【P3522】TEM(单调队列+DP)
    【P3957】跳房子(单调队列+DP+二分)
    【P1947】笨笨当粉刷匠(DP+前缀和)
    【P2564】生日礼物(单调队列)
    【[NOI2011]智能车比赛】(建图+spfa+坑爹精度)
    diyiti.cpp
    由最小环问题想到的
  • 原文地址:https://www.cnblogs.com/zahngyu/p/12013562.html
Copyright © 2011-2022 走看看