创建第一个Go的程序Hello Kitty

上一篇,我们已经搭建好了开发要用的基础环境:Go开发基础环境搭建, 今天我们要开始用GoLand实操关于Go的代码开发。

创建工程

File > New > Project

在这里插入图片描述
其中 game为项目名称

在项目目录下会自动生成一个文件:go.mod ,模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。后面会提及。
一开始内容如下:

module game

go 1.20

如果是没有这个文件,就需要去生成,go mod init {projectName}
比如:

go mod init game
go mod tidy

第一个类 main.go

一般 go的类名都为小写,并且都叫main.go,

package game

import "fmt"

func main() {
	fmt.Println("Welcome to the game of life!")
}

执行go run main.go会报错
附上参数表:

参数名格式含义
-o-o file指定编译后二进制文件名
-importcfg-importcfg file从文件中读取倒入配置
-s-s省略符号表并调试信息
-w-w省略 DWARF 符号表
-buildmode-buildmode mode设置构建模式 - 默认为 exe
-buildid-buildid id将ID记录为Go工具链的构建ID
-extld -extld linker设置外部链接器 - 默认为 clang 或者 gcc
-work-work设置该参数后不会在程序结束后删掉编译的临时文件,可用于参看编译生成的文件
-n -n加上该参数可以查看编译的过程,但不会继续执行编译后的二进制文件
-x-x加上该参数可以查看编译的过程,会继续执行编译后的二进制文件

编码规范

The 'main' file has the non-main package or does not contain the 'main' function

这是因为没声明main包,把package game 改成package main 就可以了。

PS E:\go-workspace\game> go run main.go
Welcome to the game of life!

在这过程种,可能会遇到如下异常:
Q1.windows下使用endless报错:undefined: syscall.SIGUSR1

 go run main.go
# github.com/fvbock/endless
vendor\github.com\fvbock\endless\endless.go:64:11: undefined: syscall.SIGUSR1 
vendor\github.com\fvbock\endless\endless.go:65:11: undefined: syscall.SIGUSR2 
vendor\github.com\fvbock\endless\endless.go:68:11: undefined: syscall.SIGTSTP 
vendor\github.com\fvbock\endless\endless.go:111:13: undefined: syscall.SIGUSR1
vendor\github.com\fvbock\endless\endless.go:112:13: undefined: syscall.SIGUSR2
vendor\github.com\fvbock\endless\endless.go:115:13: undefined: syscall.SIGTSTP
vendor\github.com\fvbock\endless\endless.go:119:13: undefined: syscall.SIGUSR1
vendor\github.com\fvbock\endless\endless.go:120:13: undefined: syscall.SIGUSR2
vendor\github.com\fvbock\endless\endless.go:123:13: undefined: syscall.SIGTSTP
vendor\github.com\fvbock\endless\endless.go:224:11: undefined: syscall.Kill   
vendor\github.com\fvbock\endless\endless.go:224:11: too many errors

windows 下的信号没有 SIGUSR1、SIGUSR2 等,为了不轻易的抛弃 windows 环境 (没有勇气换 mac)。目前用了一个 ditty 的办法解决:
在 go 的安装目录修改 Go\src\syscall\types_windows.go,83行左右,增加如下代码:

var signals = [...]string{
    // 这里省略N行。。。。
 
    /** 兼容windows start */
    16: "SIGUSR1",
    17: "SIGUSR2",
    18: "SIGTSTP",
    /** 兼容windows end */
}
 
/** 兼容windows start */
func Kill(...interface{}) {
    return;
}
const (
    SIGUSR1 = Signal(0x10)
    SIGUSR2 = Signal(0x11)
    SIGTSTP = Signal(0x12)
)
/** 兼容windows end */

Q2: unsupported architecture of windows/i386 - only windows/amd64 is supported
在终端执行如下:

go env -w GOARCH=amd64

总结:
本文讲述了关于用GoLand开发第一个Go程序,下一篇我们将说说如何进行Go程序的打包发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/128181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装

R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装 一、metaboanalystR 安装1.1 Bioconductor报错,无网络连接1.2 github520-修改hosts文件 二、retip安装2.1 rJava包加载报错及安装2.2 安装Retip包 三、从Bioconductor安装Rdisop报…

web3 前端dapp从redux过滤出 (我创建与别人创建)正在执行的订单 并展示在Table上

上文 web3 从redux中拿出所有已完成订单 并渲染到对应的Table列表中 我们从redux中 取出并渲染了 已完成的订单 那么 我们继续 万里长征 就快看到尽头了呀 我们先起一下环境 ganache 终端输入 ganache -d然后 登一下 MetaMask 然后 打开我们的项目 发布一下合约 truffle mig…

GZ038 物联网应用开发赛题第4套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第4套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

SAP 50策略测试简介

上篇博文写了40策略的测试,40策略就是典型的按库存生产,考虑库存,考虑销售订单。 本文将测试50策略,按单生产用的最多的策略。相信很多公司按单生产应该都会用到50的策略 1、首先还是先创建物料AB3 同时将BOM中的原材料的独立集中的字段设置为1 2、创建BOM—CS01 3、同杨…

动态通讯录及程序保存在文件中

目录 一、结构体改造及增容函数 1.结构体部分 2.初始化函数及增容函数 二、信息添加及销毁和排序 1.信息添加函数(Add) 2.销毁函数(Destroy) 3.排序部分(qsort) 三、通讯录信息保存 1.保存在文件中…

【华为数通HCIP | 网络工程师】821-BGP 组播高频题与解析(1)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

在线直线度测量仪为什么在轧钢行业越来越受欢迎!

在线直线度测量仪是利用光电检测原理及直线法进行直线度尺寸精密检测的。其测量方法是前后两台测量仪测量的数据拟合一条直线,中间的测量仪所测数值与直径做对比,即可得到被测物的直线度尺寸。 在线直线度测量仪的优点 在线直线度测量仪是一种三台小测…

Vue生命周期全解析:从工厂岗位到任务执行,一览无遗!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、生…

Bean的循环依赖问题

2023.11.10 通俗来讲,循环依赖指的是一个实例或多个实例存在相互依赖的关系(类之间循环嵌套引用)。比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 正常调用这两对象不会出现问题&am…

python实现全向轮EKF_SLAM

python实现全向轮EKF_SLAM 代码地址及效果运动预测观测修正参考算法 代码地址及效果 代码地址 运动预测 简化控制量 u t u_t ut​ 分别定义为 v x Δ t v_x \Delta t vx​Δt, v y Δ t v_y \Delta t vy​Δt,和 ω z Δ t \omega_z \Delta t ωz…

解压游戏资源,导出游戏模型

游戏中有很多好看的角色,地图等等资源。 你有没有想过,把他们导出到自己的游戏中进行魔改又或则玩换肤等操作呢? 相信很多同学都喜欢拳皇中的角色, 那么我们今天就拿拳皇15举例子,导出他的资源。 首先要先安装好这个…

通过商品ID获取到京东商品详情页面数据,京东商品详情官方开放平台API接口,京东APP详情接口,可以拿到sku价格,销售价演示案例

淘宝SKU详情接口是指,获取指定商品的SKU的详细信息。SKU是指提供不同的商品参数组合的一个机制,通过不同的SKU来标识商品的不同组合形式,如颜色、尺寸等。SKU详情接口可以帮助开发者获取指定商品的SKU列表,以及每个SKU的属性、库存…

算法:穷举,暴搜,深搜,回溯,剪枝

文章目录 算法基本思路例题全排列子集全排列II电话号码和字母组合括号生成组合目标和组合总和优美的排列N皇后有效的数独解数独单词搜索黄金矿工不同路径III 总结 算法基本思路 穷举–枚举 画出决策树设计代码 在设计代码的过程中,重点要关心到全局变量&#xff…

ChatGPT风潮再起!最新国内产品一网打尽,畅游指南曝光!

一、国内类chatgpt产品 在人工智能领域,自然语言处理(NLP)是一个重要的方向,涉及到语音识别、文本生成、机器翻译、问答系统等多个应用场景。近年来,随着深度学习技术的发展,NLP也取得了突破性的进展&#…

React向组件内部动态传入带内容的结构--props

children props&#xff1a;通过组件标签体传入结构 <A><B>xxx</B> </A> {this.props.children}render props&#xff1a;通过组件标签属性传入结构&#xff0c;一般用render函数属性 <A render{data> <C data{data}></C>}></…

super() 和 super(props) 有什么区别?

一、ES6 类 在 ES6 中&#xff0c;通过 extends 关键字实现类的继承&#xff0c;方式如下&#xff1a; class sup { constructor(name) { this.name name; } printName() { console.log(this.name); }}class sub extends sup { constructor(name, age) { …

二十二、W5100S/W5500+RP2040树莓派Pico<SMTP发送邮件>

文章目录 1 前言2 简介2 .1 什么是SMTP&#xff1f;2.2 SMTP是如何工作的&#xff1f;2.3 SMTP、IMAP和POP32.4 SMTP应用场景 3 WIZnet以太网芯片4 SMTP发送邮件示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前…

常见产品结构四大类型 优劣势比较

一般&#xff0c;我们通过产品架构来构建用户体验&#xff0c;这样可以提供更清晰的导航和组织、优化用户流程和交互、增强产品的可扩展性和可维护性&#xff0c;提升用户的满意度和忠诚度。如果没有明确的产品结构&#xff0c;可能会导致功能冗余或功能缺失、交互流程混乱等问…

「Verilog学习笔记」使用generate…for语句简化代码

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 generate…for语句是Verilog HDL语言特有的语句&#xff0c;使用循环结构编写可综合的多个形式相近的代码&#xff0c;循环变量必须由特定关键字genvar声明。 timesca…

VSD Viewer v6.16.1(Visio绘图文件阅读器)

VSD Viewer是一款可以打开和查看Microsoft Visio文件的工具&#xff0c;适用于Windows和macOS操作系统。它具有以下优点&#xff1a; 直观易用&#xff1a;VSD Viewer的用户界面非常简单直观&#xff0c;易于使用。支持多种文件格式&#xff1a;VSD Viewer支持多种Visio文件格…