go入门学习第二天 第一个go程序编写

第一个go程序编写 hello world

go脚本编写以及执行

创建项目文件 以及go脚本
脚本路径 goprojects/helloword/main.go 编写程序如下

package main

import "fmt"

func main() {
	fmt.Println("hello word")
}

进入脚本目录执行go命令脚本

go build main.go

go build 编译生成 main.go 的二进制可执行文件 main.exe

PS D:\coder\goprojects\helloword> .\main.exe 
hello word

windows 是 .\main.exe 在命令行界面执行 linux 和mac 都是./main 执行生成的二进制文件

也可以使用 go run 命令执行 go脚本源码看到显示结果

D:\coder\goprojects\helloword> go run main.go
hello word

go程序的基本结构

package main

这一行代码定义了 Go 中的一个包 package。包是 Go 语言的基本组成单元,通常使用单个的小写单词命名,一个 Go 程序本质上就是一组包的集合。所有 Go 代码都有自己隶属的包

func main() {
    fmt.Println("hello, world")
}

定义一个main 的函数

fmt.Println("hello, world")

调用fmt 包中得 Println 输出内容

import "fmt"

go语言中 使用 import 导入包路径

go mod使用场景


package main

import (
  "github.com/valyala/fasthttp"
  "go.uber.org/zap"
)

var logger *zap.Logger

func init() {
  logger, _ = zap.NewProduction()
}

func fastHTTPHandler(ctx *fasthttp.RequestCtx) {
  logger.Info("hello, go module", zap.ByteString("uri", ctx.RequestURI()))
}

func main() {
  fasthttp.ListenAndServe(":8081", fastHTTPHandler)
}

当前脚本功能 是调用两个第三方的包 监听8081端口,有80801的访问 会将日志打印出来

我们直接使用go编译该文件


go build main.go
main.go:4:2: no required module provides package github.com/valyala/fasthttp: go.mod file not found in current directory or any parent directory; see 'go help modules'
main.go:5:2: no required module provides package go.uber.org/zap: go.mod file not found in current directory or any parent directory; see 'go help modules'

编译出错提示这两个第三方的加载异常 go.mod 不存在

Go module 构建模式是在 Go 1.11 版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go 1.16 版本中,Go module 已经成为了 Go 默认的包依赖管理机制和 Go 源码构建机制。

初始化go module 文件

go mod init github.com/bigwhite/hellomodule
go: creating new go.mod: module github.com/bigwhite/hellomodule
go: to add module requirements and sums:
go mod tidy

go mod tidy 加载配置第三方包路径

go mod tidy       
go: downloading go.uber.org/zap v1.18.1
go: downloading github.com/valyala/fasthttp v1.28.0
go: downloading github.com/andybalholm/brotli v1.0.2
... ...

继续回来编译go脚本

go bulid main.go

执行编译文件

.\main.exe

请求8081端口

curl localhost:8081/foo/bar

看到打印的监听端口的日志

PS D:\coder\goprojects\hellomodule> .\main.exe
{"level":"info","ts":1669189326.354886,"caller":"hellomodule/main.go:15","msg":"hello, go module","uri":"/foo/bar"}

好记性不如烂笔头,本文学自 极客时间 Tony Bai · Go 语言第一课

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值