创建第一个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程序的打包发布

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值