使用Goland编写一个简单的Go语言Web应用并打包

使用Goland编写一个简单的Go语言Web应用并打包

一、安装部署

  • 本文暂只介绍Windows安装的方法,Linux暂不介绍

1.1 安装Go语言

/*
    1.前往golang官网https://golang.google.cn/dl/下载windows安装文件,例如    go1.18.4.windows-amd64.msi
    2.进行安装,强烈建议更改安装路径,不要安装在C盘
    3.安装完毕后在环境变量的Path中配置路径,例如我安装的Go语言根目录是D:\Go,那么就配置成D:\Go\bin
*/

1.2 安装Goland

1.2.1 安装
/*
    俗话说工欲善其事,必先利其器。安装一个顺手好用的IDE很重要,这里我推荐使用Jetbrains的Goland编译器。
    1.前往Goland官网https://www.jetbrains.com/go/下载安装包,推荐下载goland-2022.3.4版本
    2.进行安装,强烈建议更改安装路径,不要安装在C盘
    3.安装完毕后按照1.2.2中的步骤进行激活
*/
1.2.2 激活
/*
    1.前往网站https://vrg123.com/,微信扫描二维码关注公众号,获取密钥
    2.复制得到的密钥到密钥的输入框中,获取激活码
    3.复制激活码到Goland中的active_code中,进行激*/

二、撰写一个简单的HelloWorld应用

  1. 打开激活好的Goland,新建一个工程
  2. 在创建好的工程文件夹中,建立src/myApp/app.go文件
  3. 编辑如下代码至app.go中
package main

import (
	"fmt"
	"net/http"
)

func handler(writer http.ResponseWriter, request *http.Request) {

	fmt.Fprintf(writer, "Hello World, %s!", request.URL.Path[1:])

}

func main() {

	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
	
}

  1. 各行代码的意义
/*
   让我们来仔细分析一下这个Web应用的代码。第一行代码声明了这个程序所属的包,跟在package关键字之后的main就是包的名字。Go语言要求可执行程序必须位于main包当中,Web应用也不例外。
   
   位于package之后的import语句用于导入所需的包,对Go来说,Web应用的运行环境是由net/http包直接提供的,这个包和应用的源代码会一起被编译成一个可以快速部署的独立Web应用。被导入的包为fmt和net/http,前者可以使用Fprintf等函数对I/O进行格式化,后者可以让程序与HTTP进行交互
   
	handler这个处理器函数接受两个参数作为输入,第一个参数为ResponseWriter接口,第二个参数则为指向Request结构的指针。至于Fprintf函数在被调用时则会使用一个ResponseWriter接口,一个格式化指示符%s以及从Request结构里面提取到的路径信息作为参数。
	例如若我们访问的地址为http://localhost:8080,页面打印出的内容为Hello World, !;若我们访问的地址为http://localhost:8080/api,则页面打印出的内容为Hello World, api!
	
	最后的main函数很简单,他首先把之前定义的handler函数设置成根URL被访问时的处理器,然后启动服务器并让他监听系统的8080端口,至此一个简单的web应用搭建完成。

*/

三、打包运行

  • 我们可以选择直接用Goland编译器的run运行我们写好的app.go;也可以选择通过go install命令打包成二进制文件,然后进行运行。
  • 这里我们介绍一下如何使用go install命令打包运行
  1. 首先复制工程中的myApp文件夹至Go语言根目录的src文件夹下,例如我安装的Go语言根目录是D:\Go,那么就复制到D:\Go\src文件夹下
  2. 在任意路径下打开cmd,输入命令go install myApp即可打包成功,注意是在go语言环境变量配置好的前提下
  3. 打包完成后,D:\Go\bin中会生成好myApp.exe文件,运行myApp.exe即可在Web端进行访问
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,由于go语言的正确写法是"golang",我可以为您提供一个golang语言编写简单区块链代码示例: ```go package main import ( "crypto/sha256" "encoding/hex" "encoding/json" "fmt" "time" ) // 区块结构体 type Block struct { Index int // 区块索引 Timestamp string // 时间戳 Data string // 区块数据 PrevHash string // 上一个区块的哈希值 Hash string // 当前区块的哈希值 } // 计算哈希值 func calculateHash(block Block) string { record := fmt.Sprintf("%d%s%s%s", block.Index, block.Timestamp, block.Data, block.PrevHash) h := sha256.New() h.Write([]byte(record)) hashed := h.Sum(nil) return hex.EncodeToString(hashed) } // 生成新区块 func generateBlock(prevBlock Block, data string) Block { var newBlock Block newBlock.Index = prevBlock.Index + 1 newBlock.Timestamp = time.Now().String() newBlock.Data = data newBlock.PrevHash = prevBlock.Hash newBlock.Hash = calculateHash(newBlock) return newBlock } // 验证区块是否合法 func isBlockValid(newBlock, prevBlock Block) bool { if prevBlock.Index+1 != newBlock.Index { return false } if prevBlock.Hash != newBlock.PrevHash { return false } if calculateHash(newBlock) != newBlock.Hash { return false } return true } // 区块链结构体 type Blockchain struct { Chain []Block // 区块链 } // 添加新区块 func (bc *Blockchain) AddBlock(data string) { prevBlock := bc.Chain[len(bc.Chain)-1] newBlock := generateBlock(prevBlock, data) if isBlockValid(newBlock, prevBlock) { bc.Chain = append(bc.Chain, newBlock) } } // 初始化区块链 func initializeBlockchain() Blockchain { return Blockchain{[]Block{{ Index: 0, Timestamp: time.Now().String(), Data: "Genesis Block", PrevHash: "", Hash: "", }}} } // 打印区块链 func printBlockchain(bc Blockchain) { bcJson, _ := json.MarshalIndent(bc, "", " ") fmt.Println(string(bcJson)) } func main() { bc := initializeBlockchain() bc.AddBlock("Block 1") bc.AddBlock("Block 2") printBlockchain(bc) } ``` 这是一个非常简单的区块链代码,它实现了区块的创建、校验和链的打印功能。当然,在实际应用中,需要考虑更多的安全和性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nikolas06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值