zoukankan      html  css  js  c++  java
  • GO语言第一天(自学)

    GO语言我发现需求量有点上去啊?!然后自己开始从网上东拼西凑搜索各种知识点,发现太散了..........,往往一个功能就要打开好几个网页,为了方便,于是我开始整理那些三碎的知识点,顺便学习一下GO语言吧,我习惯在Linux下操作,所以.............

    首先,先下载GO语言................

    https://golang.google.cn/dl/

    嗯..........没毛病,下载完之后进行解压安装

    [root@localhost GO]# pwd
    /GO # 我的下载路径
    [root@localhost GO]# ls
    go1.10.2.linux-amd64.tar.gz
    [root@localhost GO]# tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz  # 解压
    [root@localhost GO]# export PATH=$PATH:/usr/local/go/bin # 加入变量
    [root@localhost GO]# go version # 查看版本
    go version go1.10.2 linux/amd64
    [root@localhost GO]# 

    上面执行完毕之后,你认为go语言就彻底完了吗?没有,不信你重启一下系统,再输入查看版本............

    咋回事儿?网上找了半天也没说出个所以然来,既然这样,那就想办法彻底解决呗!于是:

    Go 语言的基础组成有以下几个部分:

    • 包声明
    • 引入包
    • 函数
    • 变量
    • 语句 & 表达式
    • 注释
    [root@localhost GO]# vim rungo.go
    """
    # 代码内容
    package main 
    import "fmt" 
    func main(){
        fmt.Println("hello chen")
    }
    """
    [root@localhost GO]# go run rungo.go # 好熟悉,和python差不多哈
    hello chen # 执行结果
    [root@localhost GO]# 
    第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
    下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
    下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
    下一行 fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 
    。 
    使用 fmt.Print("hello, world
    ") 可以得到相同的结果。 
    Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。 
    当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。
    代码定义

    接下来就是语言基础语法

    1. 标记:Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。
      fmt.Println("hello chen")
    2. 行分隔符:在 Go 程序中,一行代表一个语句结束。因为这些工作都将由 Go 编译器自动完成。如果强行打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中并不鼓励这种做法。
      fmt.Println("hello chen")
      fmt.Println("hello yu")
    3. 注释:注释不会被编译,每一个包应该有相关注释。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾

      // 单行注释
      /*
       多行注释
       */
    4. 标识符:标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

      有效标识符:
      mahesh   kumar   abc   move_name   a_123
      myname50   _temp   j   a23b9   retVal
      无效标识符:
      1ab(以数字开头)
      case(Go 语言的关键字)
      a+b(运算符是不允许的)
    5. 关键字:
      程序一般由关键字、常量、变量、运算符、类型和函数组成。 
      程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。 
      程序中可能会使用到这些标点符号:.、,、;、: 和 …。

      Go 代码中会使用到的 25 个关键字或保留字:


      Go 语言还有 36 个预定义标识符:

    6. 空格: Go 语言中变量的声明必须使用空格隔开,如:

      var age int;

      语句中适当使用空格能让程序看易阅读。

      无空格:

      fruit=apples+oranges;

      在变量与运算符间加入空格,程序看起来更加美观,如:

      fruit = apples + oranges;

    Web框架:

    语言都有web框架,好比python的pycharm;还比如C的Raphters.....,GO语言也有框架,下面指路:

    https://blog.csdn.net/dev_csdn/article/details/78740990

    自己可以去上面选择,emmmmmm............,我选择iris,既然这样那就撸代码吧。

    大概层级目录是:GO目录下新建一个example.go文件;接着在GO目录下接着创建一个views的目录;然后进入views目录里面创建一个hello.html的文件

    [root@localhost GO]# vim example.go
    [root@localhost GO]# mkdir views
    [root@localhost GO]# cd views/
    [root@localhost views]# vim hello.html
    [root@localhost views]# go run example.go

     详细代码:

    """example.go"""
    package main
    
    import "github.com/kataras/iris"
    
    func main() {
        app := iris.New()
        // Load all templates from the "./views" folder
        // where extension is ".html" and parse them
        // using the standard `html/template` package.
        app.RegisterView(iris.HTML("./views", ".html"))
    
        // Method:    GET
        // Resource:  http://localhost:8080
        app.Get("/", func(ctx iris.Context) {
            // Bind: {{.message}} with "Hello world!"
            ctx.ViewData("message", "Hello world!")
            // Render template file: ./views/hello.html
            ctx.View("hello.html")
        })
    
        // Method:    GET
        // Resource:  http://localhost:8080/user/42
        //
        // Need to use a custom regexp instead?
        // Easy,
        // just mark the parameter's type to 'string'
        // which accepts anything and make use of
        // its `regexp` macro function, i.e:
        // app.Get("/user/{id:string regexp(^[0-9]+$)}")
        app.Get("/user/{id:long}", func(ctx iris.Context) {
            userID, _ := ctx.Params().GetInt64("id")
            ctx.Writef("User ID: %d", userID)
        })
    
        // Start the server using a network address.
        app.Run(iris.Addr(":8080"))
    }
    
    """hello.html"""
    <html>
    <head>
        <title>Hello Page</title>
    </head>
    <body>
        <h1>{{.message}}</h1>
    </body>
    </html>
    View Code

    按照流程创建完之后,运行程序,复制地址,在浏览器里打开,输入地址就会看到:

    emmmmm............第一步成功了,里面的代码以后详细说,如果心细的会发现在创建go文件的代码里面有很多的隐藏信息,以后再说吧。

  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/ArkhamKnight/p/9142304.html
Copyright © 2011-2022 走看看