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

文章介绍了Go语言在软件开发中的新挑战,如多核硬件和分布式计算环境下的应用,以及其简洁的语法和内置并发支持。它强调了Go作为云端和区块链开发语言的角色。接着,文章详细阐述了如何设置Go的开发环境,编写并运行第一个Go程序,包括GOPATH的设置,程序结构,主函数的定义以及退出返回值的处理。此外,还讨论了如何获取命令行参数。
摘要由CSDN通过智能技术生成

一、简介

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值