• 编写第一个Go程序


    编码格式

    Go语言源码文件编码格式必须是 UTF-8 格式,否则会导致编译器出错。

    结束语句

    在 Go 程序中,一行代表一个语句结束。每个语句不需要像其它语言一样以分号 ";"结尾,因为这些工作都将由 Go 编译器自动完成。

    如果你打算将多个语句写在同一行,它们则必须使用 ";"人为区分。实例如下:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        fmt.Println("oldboy")
        fmt.Println("Linux");
        fmt.Println("Java");fmt.Println("DBA")
        fmt.Println("Python");fmt.Println("Golang");
    }

    代码注释

    注释不会被编译,每一个包应该有相关注释。

    Go语言代码注释支持 "//"、"/**/" 两种注释方式,不能嵌套。 建议用单行注释 // 源码里也是这么用的

    单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。实例如下

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

    编写 Hello World

    1、创建文件 hello.go,不写入任何内容。运行 go build hello.go 命令进行编译。将会输出如下错误:
    can't load package: package main: 
    hello.go:1:1: expected 'package', found 'EOF'

    因为Go语言中,所有文件必须隶属于某一个包。需要在文件的头部声明一个package name,其中package为关键字,name为包名。

    2、在hello.go文件中添加一条语句,之后重新进行编译。

    添加内容如下:

    package main

    执行编译,将会输出如下错误:

    runtime.main_main·f: relocation target main.main not defined
    runtime.main_main·f: undefined: "main.main"

    因为Go程序启动时,需要在文件中有一个可标识入口。Go程序的入口函数是main函数。

    3、在hello.go文件中添加另外一行,并且重试。

    添加内容如下:

    package main
    
    func main(){}

    执行运行命令 go run hello.go ,程序正确执行并很快就退出了

    到目前为止,我们已经创建了自己的第一个程序。虽然没有功能,但是已经可以正常运行了。

     4、我们继续添加功能,添加内容如下:
    package main
    
    func main(){
        Println("hello world")
    }

    执行编译,将会输出如下错误:

    ./hello.go:4:2: undefined: Println

    因为Println函数存放在fmt包中。我们程序中没有主动引入fmt包,所以编译器报未定义错误。

    如果我们需要使用这些包中的功能,首先需要import引入相应的包。包中的可导出组件可以通过 包名.组件名的方式进行调用。

    函数Println和其它读写文本和字符的函数,都存放在一个叫做fmt的包中——formatting的缩写。

    5、再添加几行代码,添加内容如下:
    package main
    
    import "fmt"
    
    func main(){
        fmt.Println("hello world")
    }

    执行 go run hello.go 命令,运行程序。运行结果如下:

    hello world

    Go 程序启动执行顺序如下:

    按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程:

    如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。

    然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。

    在完成这一切之后,main 也执行同样的过程,最后调用 main 函数开始执行程序。

  • 相关阅读:
    (转)MyEclipse +Servlet
    Android: MediaRecorder start failed
    Android: 帮助找出内存泄漏的工具
    Node & Express: some tips
    MySQL: Create Master
    scp: useful commands
    MySQL: 打开binlog选项后无法重启MySQL
    IIS: 配置web.config解决Maximum request length exceeded错误
    MySQL: 让MySQL支持颜文字emoji
    Linux: 通过命令行上传文件到ftp服务器
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/10724201.html
Copyright © 2020-2023  润新知