zoukankan      html  css  js  c++  java
  • GO系列 | 5分钟入门GO【译】

    什么是Google Go?

    Google Go是由Robert Griesmer,Rob Pike和Ken Thompson在Google设计的一种开源编程语言。 Go在语法上类似于C语言; 除了内存安全性,垃圾回收,结构化类型和CSP样式并发之外。 它具有丰富的标准库。 它最初于2007年开发,于2009年11月发布。最近于2019年4月11日进行了更新。

    Google Go也被称为Golang。 Golang是汇编语言(GC)和C ++`(gccgo)的实现。

    先决条件

    对于Go编程语言,应该熟悉C编程。 如果您擅长C语言,那么您很容易理解Go编程的概念。 我试图简化本教程,并从头开始。


    Go编程的特点

    它的一些基本特性如下:

    • 快速编译
    • 内置并发支持
    • 它支持接口和类型嵌入
    • 它是现代快速并且强壮的。

    为了使其简洁明了,特意排除了其某些功能。

    Go的一些被排除的特性是-

    • 类型继承支持
    • 方法或操作符重载
    • 指针的算术
    • 断言的支持
    • 泛型编程支持

    GO程序结构

    Go程序的基本结构包含以下部分:

    • 声明包
    • 导入包
    • 变量
    • 语句和表达式
    • 函数
    • 注释

    Go安装入门指南

    Go编程可以安装在Windows,Linux,Mac等不同的操作系统上。要安装Go语言,请访问其官方网站golang.org。 选择所需的操作系统包,例如Windows 7,选择适用于window7的设置,然后按照安装过程进行操作。

    设置环境变量(对于Windows)

    您可以在“系统”控制面板的“高级”选项卡上找到环境变量的设置。

    检查Go版本

    您可以使用go version命令检查Go语言的版本。

    第一个Go程序

    我们可以在任何所需的目录中的任何基本编辑器上编写Go代码,并将其保存为扩展名.go

    package main
     
    import ("fmt")
     
    func main() {
     
                fmt.Println("Hello World! This is my first Go program
    ")
     
    }
    

    保存扩展名为.go,我这里保存为first.go

    执行

    打开CMD然后按执行

    go run First.go
    

    输出

    Hello world! This is my first Go program
    

    如下所示

    GO的包、导入操作和可见性

    为了便于维护程序我们将软件包进行分类。 Go程序的每个文件都属于某些程序包。 每个Go程序必须具有“main”程序包。

    包命名应使用小写字母。 如果更改并重新编译了程序包,则也必须重新编译属于该软程序包的所有客户端程序。

    导入操作

    Import用于从库中导入任何程序包。 Go程序通过import关键字链接到其他程序包。

    我们可以通过一个语句导入多个程序包,例如:

    import “fmt”
    
    import “os”
    

    或者我们可以写成

    import “fmt”;
    import”os”;
    

    我们还可以使用以下方式进行包导入操作

    import(
    “fmt”
    “os”)
    
    //或者
    import(“fmt;”os”)
    

    可见性

    标识符可以是变量,函数,类型或结构(struct)字段或常量。 标识符可以声明为小写或大写。

    如果标识符以小写字母声明,则它将在包中可见。 如果以大写形式声明,那么它将在称为export的包的内部或外部可见。 点(.)运算符用于访问标识符: pack.Date(此处为pack)是包名称,Date是标识符。


    Google Go数据类型

    数据类型表示存储在变量中的值的类型,函数返回的值的类型,等等。

    Go-中有三种基本数据类型

    • 数值类型
    • 字符串类型
    • 布尔型

    数值类型

    它代表各种数值,例如整数,浮点数和复数值。

    一些数值类型:

    • In8(8位有符号整数)
    • Int16(16位有符号整数)
    • Int32(32位有符号整数)
    • Int64(64位有符号整数)
    • Uint8(8位无符号整数)
    • Uint16(16位无符号整数)
    • Uint32(32位无符号整数)
    • Uint64(64位无符号整数)
    • Float32(32位浮点数)
    • Float64(64位浮点数)
    • Complex64(具有32个实部和虚部)
    • Complex128(具有浮点数的32个实部和虚部)

    字符(String)类型

    字符串表示字符序列(字节)。 可以在字符串中执行各种操作,例如连接,提取子字符串等。

    布尔类型

    它有两个值true或者false

    变量

    变量是指用于存储某些值的内存地址。类型参数表示可以存储在内存中的值类型。

    语法

    Var <变量名> <类型>
    

    声明变量后,你就可以给变量分配一个。 您也可以在声明变量时给出初始值

    Var <变量名> <类型> = <值>
    

    也可以在单个语句中声明多个变量

    Var <变量1>, <变量2> = <值1>, <值2>
    

    一个便于理解变量的GO代码:

    package main
     
    import “fmt”
     
    func main() {
     
    var a int      //variable declaration
     
      	a=3 //assigning value 3 in a
     
        fmt.Println("a:", a) //prints 3
     
     //declaring a integer variable b with value 20
     
        var b int
     
    	b=20
     
        fmt.Println("b:", b)
     
       
     
        //declaring a variable c with value 50
     
        var c=50
     
        fmt.Println("c:", c)
     
       
     
        //Multiple variables are assigned in single line- p with an integer and q with a string
     
        var p, q = 100,"hello"
     
        fmt.Println("p and q:", p,q)
     
    }
    

    输出

    a: 3
     
    b: 20
     
    c: 50
     
    p and q: 100 hello
    

    常量

    常量通过使用关键字“ const”来声明。 如果分配了常量,则不能更改其值。

    Sample:

    package main
     
    import ("fmt")
     
    func main() {
     
                const x =50
     
                fmt.Println(x)
     
                x = 20
     
                fmt.Println(x)
     
    }
    

    输出

    .constant.go:7:4: cannot assign to b
    

    循环

    循环用于根据给定条件重复执行该代码块。 大多数编程语言都支持三种循环类型:for,while和dowhile

    注意: Go仅支持循环。

    语法

    for initialization_expression; evaluation_expression; iteration_expression{s
     
    // statements
     
    }
    

    首先执行initialization_expression,然后计算evaluation_expression。如果为真,则执行块代码。执行itereation_expression id,然后循环再次开始。这个过程将继续下去,直到evaluation_expression变为false

    循环的代码示例

    package main
     
    import "fmt"
     
     
     
    func main() { 
     
    var i int
     
    for i = 0; i <= 7; i++ {
     
    fmt.Println(i)
     
        }
     
    }
    

    输出

    0
     
    1
     
    2
     
    3
     
    4
     
    5
     
    6
     
    7
    

    条件语句

    if-else 语句

    是一个条件语句

    语法

    if condition
     
    { // statement1
     
    }
     
    else
     
    {// statement2
     
    }
    

    验证输入的数字是正数还是负数

    package main
     
    import "fmt"
     
     
     
    func main() { 
     
        int i;
     
        if i< 0 {
     
            //Executes if i< 0
     
            fmt.Println("i is negative")
     
        }
     
    else{
     
    fmt.println(“I is positive)
     
    }
    

    Switch语句

    Swtich也是条件语句。 Switch语句比较条件并评估结果。 找到匹配项后,将执行与该条件关联的语句。 我们还可以添加一个默认条件来进行切换,如果找不到其他匹配项,将执行该默认语句。

    语法

    switch expression {
     
        case 1:
     
            statement_1
     
        case 2:
     
            statement_2
     
        case n:
     
            statement_n
     
        default:
     
            statement_default
     
        }
    

    Switch示例代码

    package main
     
    import "fmt"
     
    func main() { 
     
        x,y := 10,5
     
        switch x+y {
     
        case 1:
     
            fmt.Println("Sum is 15")
     
        case 2:
     
            fmt.Println("Sum is 20")
     
        case 3:
     
            fmt.Println("Sum is 30")
     
        default:
     
            fmt.Println("Printing default")
     
        }
    }
    

    输出

    sum is 15
    

    Goto语句

    Goto是一个跳转语句。 它用于将控件转移到程序的其他部分。 每个Goto语句都有一个标签,我们使用该标签来转移程序的控制权。

    示例

    Package main
     
    Import (“fmt”)
     
    Func main() {
     
    Var input int
     
    Loop: 
     
       fmt.Print("You  are a child ") 
     
       fmt.Print("Enter  age ") 
     
       fmt.Scanln(&input) 
     
       if (input <= 18) { 
     
          goto Loop 
     
       } else { 
     
          fmt.Print("you are a man") 
     
       } 
     
    }
    

    输出

    You are a child
     
    Enter your age 12
     
    You are a child
     
    Enter your age 19
     
    You are a man
    

    break语句

    break语句可以在for循环中用于计数器,条件等。它也可以在switch语句中使用。 break语句用于中断发生它的最里面运行的语句。

    语法

    break;
    

    bread语句示例

    package main 
     
    import "fmt" 
     
    func main() { 
     
       var  x int = 1 
     
       for x< 10{ 
     
          fmt.Print("Value of x is ",x,"
    ") 
     
          x++; 
     
          if x > 5{ 
     
             /* Terminate the loop using break statement */  
     
             break; 
     
          } 
     
       } 
     
    }
    

    输出

    Value of x is 1
     
    Value of x is 2
     
    Value of x is 3
     
    Value of x is 4
     
    Value of x is 5
    

    数组

    数组是具有相同数据类型的元素的集合。 Array表示固定大小,并命名为元素序列。 数组不能具有两个不同数据类型的元素。 一旦定义,我们就无法更改数组的大小。

    语法

    var arrayname [size] type
    

    每个数据元素都可以按如下赋值

    arrayname [index]= value
    

    数组坐标从 0 到 1

    我们可以在声明期间赋值给数组元素

    arrayname:=[size] type { value_0,value_1,value_2,…….,value_n}
    

    GO数组示例

    package main
     
    import "fmt"
     
    func main() { 
     
        var numbers [3] string // string declaration of array size 3
     
        numbers[0] = "One"
     
        numbers[1] = "Two"
     
        numbers[2] = "Three"
     
        fmt.Println(numbers[1]) //prints Two
     
        fmt.Println(len(numbers)) //prints 3
     
        fmt.Println(numbers) // prints [One Two Three]
     
        directions := [...] int {1,2,3,4,5} // creating an integer array and the size of the array is defined by the number of elements
     
        fmt.Println(directions) //prints [1 2 3 4 5]
     
        fmt.Println(len(directions)) //prints 5
     
    }
    

    输出

    Two
     
    3
     
    [One two three]
     
    [1 2 3 4 5]
     
    5
    

    Slice切片

    切片是数组的一部分,或者是其指向的基础数组的局部视图。 您可以像访问数组一样访问切片名称和索引号。 我们可以更改切片的大小,但不能更改数组的大小。 切片的内容实际上是数组的指针。 如果我们更改slice中的元素,那么它也会影响数组的内容。可以把Slice理解成Java的动态数组ArrayList

    语法

    Var slice_name [] type= array_name [start: end]
    

    小结

    好了,到这里相信大家已经了解到了GO的一些特性和基本用法,我们初学一门语言不要死磕它的所有内容,主要关注它的特性,然后再跟我们学过的语言类比学习,程序设计的思想实际是跟我们过去学过的语言大同小异,下一章我们就可以直接进入程序实战演练,去熟悉GO的高级用法,当遇到不懂的东西,我们再去查找相关资料,这样子会吸收得更快。

  • 相关阅读:
    常见常用的CSS
    Js删除数组函数
    使用CSS让多出来的字变为省略号
    CSS缩写的样式
    mac下安装nginx
    ubuntu下程序员常用命令大全
    vue.js实现瀑布流之vue-waterfall-easy
    vue.js常见的报错信息及其解决方法的记录
    laravel5.4生成验证码
    java算法之超级丑数
  • 原文地址:https://www.cnblogs.com/evan-liang/p/12520214.html
Copyright © 2011-2022 走看看