Go语言简介以及编写第一个Go程序

一、简介

1. 软件开发的新挑战

  1. 多核硬件架构
  2. 超大规模分布式计算集群
  3. Web 开发的前所未有的开发规模,更新速度。

BAT、滴滴等公司在使用,知乎舍弃 Python 转向 Go。Docker、K8s 也在使用,又称云端开发语言。又是区块链开发语言。

2. 开发人员喜欢的特性

  1. 简单,25 个关键字
  2. 内置并发支持,垃圾回收
  3. 高效,编译静态语言
  4. 生产力,简介清晰的依赖管理,独特的接口类型设计,编程方式约束。参考 iOS 操作剁掉很多。大道至简。

3. 误区

共享内存并发控制,忽略 Go 语言本身 CSP 并发机制。再者,Java 的不优雅引发的坑。

4. Google 安装以及官方文档

二、编写第一个 Go 程序

1. 开发环境构建

GOPATH:

  1. 在1.8版本前必须设置这个环境变量
  2. 在 1.8 版本后(含 1.8),如果没有设置使用默认值。
  • 在 Unix 上默认为 $HOME/go,在 Windows 上默认为 %USERPROFILE%/go
  • 在 Mac 上 GOPATH 可以通过修改 ~/.bash_profile 来设置。

2. 编写一个 Go 程序

// 查看 Go 版本
go version

// 创建 Go 学习的总目录 d:\Gocode
// src 是源码路径,在下面建立 ch1/main/hello_world.go,记得 helloworld 文件拓展名记得要写 go
package main
import "fmt"

func  main() {
 fmt.Println("Hello World") 
}



//在 cmd 里面:

>d:
>cd d:\Gocode\src\ch1\main
// 运行代码
go run hello_world.go
// 编译代码,会生成一个 hello_world 的二进制文件,执行这个二进制文件也会直接回显出来 Hello World
go build hello_world.go

// Go 在默认情况下都会使用静态连接,编译完的 Go 程序是一个独立的二进制文件,有很好的便携性。可以拷贝到不同的机器上运行

3. 基本程序结构

package main // 包,表明代码所在的模块(包)
import "fmt" // 引入的代码依赖

// 功能实现
func main() {
 fmt.Println("Hello World") 

4. 应用程序入口

  1. 必须是main包:package main (package的声明必须是main,不过目录名不需要是main)
// 新建一个目录`\Gocode\src\ch1\hello`,把前面的`hello_world.go`文件复制过去,依然执行正常
> go run hello_world.go  
Hello World

//但如果把`hello_world.go`里面的`package main`改成`package main1`再`go run`运行就会报错

> go run hello_world.go
package command-line-arguments is not a main package
  1. 必须是main方法:func main()
  2. 文件名不一定是main.go

5. 退出返回值

与其他主要编程语言的差异:

  1. Go 中main函数不支持任何返回值
  2. 通过os.Exit来返回状态

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("Hello World")
    os.Exit(-1)
}

输出结果:

> go run hello_world.go  
Hello World
exit status 255

6. 获取命令行参数

与其他主要编程语言的差异

  1. main 函数不支持传入参数
  2. 在程序中直接通过 os.Args 获取命令行参数
package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
    fmt.Println("Hello, world!")
    os.Exit(-1)
}

加一个参数执行该文件,输出一个二进制的命令和我们的命令行参数

>go run hello_world.go ddao
[C:\Users\xxxxxxxx\xxx\xxxxxxxxxx\go-build2455331386\b001\exe\hello_world.exe ddao]
Hello, world!
exit status 255
package main

import (
    "fmt"
    "os"
)

func main() {
    if len(os.Args) > 1 {
        fmt.Println("Hello, world!", os.Args[1])
    }
}
>go run hello_world.go ddao
Hello, world! ddao

猜你喜欢

转载自blog.csdn.net/weixin_62173811/article/details/129909300