Write the Code. Change the World.

分类目录
7月 28

很多时候,都是终端里看信息。多色的信息就很好看了。我是一个实在人,就从零开始搞一个。其实是别人搞好了,我拿来用。

开始

终端高亮,我们用这个 https://github.com/mgutz/ansi

先建立一个 go 项目

mkdir artisan 
cd artisan 
go mod init artisan

再安装 ansi

go get github.com/mgutz/ansi

然后再封装一个调用方法包

mkdir -p pkg/console
touch pkg/console/console.go

console.go

// Package console 命令行辅助方法
package console

import (
    "fmt"
    "os"

    "github.com/mgutz/ansi"
)

// Success 打印一条成功消息,绿色输出
func Success(msg string) {
    colorOut(msg, "green")
}

// Error 打印一条报错消息,红色输出
func Error(msg string) {
    colorOut(msg, "red")
}

// Warning 打印一条提示消息,黄色输出
func Warning(msg string) {
    colorOut(msg, "yellow")
}

// Exit 打印一条报错消息,并退出 os.Exit(1)
func Exit(msg string) {
    Error(msg)
    os.Exit(1)
}

// ExitIf 语法糖,自带 err != nil 判断
func ExitIf(err error) {
    if err != nil {
        Exit(err.Error())
    }
}

// colorOut 内部使用,设置高亮颜色
func colorOut(message, color string) {
    fmt.Fprintln(os.Stdout, ansi.Color(message, color))
}

最后,新建一个 main.go 然后,调用

touch main.go

package main

import "artisan/pkg/console"

func main() {
    console.Success("多少恨昨夜梦魂中,还似旧时游上苑。车如流水马如龙,花月正春风。")
}

go run main.go

这个时候就可以看到绿色的输出了。

6月 17

在做 go 测试的时候,经常会有端口被使用,而没停止。停掉该进程就很有必要。

操作一波

# 以 3000 端口为例
lsof -i:3000

# 通过 lsof 命令找到 pid ,杀掉 pid
kill -9 xxxx
6月 15

利用air(git)实现 go 项目的热重启。安装完 air 后,运行 air 出现 zsh: command not found: air 报错。air 是安装在 gopath 的 bin 目录下,终端找不到这个文件。

解决方法

vim ~/.zshrc

# 在末尾追加下边语句,保存
alias air='$(go env GOPATH)/bin/air'

# source 使得配置生效
source ~/.zshrc

再运行 air 发现就可以了。如果不行,是终端对应的配置文件不是这个。

  __    _   ___
 / /\  | | | |_)
/_/--\ |_| |_| \_ , built with Go

可是,如果又安装了一个呢。是不是又得再加。这样好麻烦。把 GOPATH BIN 目录加入到环境变量中就可以了的。

vim ~/.zshrc

# 加入下边的,保存
export PATH="$(go env GOPATH)/bin:$PATH"

# source 使得配置生效
source ~/.zshrc
12月 29

在一个项目中,环境变量,配置文件这些都是一个很重要的环节。设计好了,体验也会不一般。在 go 中,使用 viper 来构造一个这样的配置环境。

https://github.com/spf13/viper

开始之前

  • 在开始之前,我们已经熟悉了 laravel 的配置文件的方式。这里,我们仿照 laravel 的结构方式来组织我们的代码。使用 .env 文件来放置重要配置信息。当然也有 .env.example 。.env 不会加入版本控制中,.env.example 加入版本控制中。
  • go 的 init 函数。相关联文件中, init 函数总是会先执行的。init 函数要慎用,仔细用。导入顺序也很有关系。

  • 一个项目中 MVC 是指的是业务逻辑的代码,而除了支撑业务逻辑代码以外,还有底层的辅助代码。例如路由加载、数据库初始化等。在我们的项目中,遵循 Go 社区的惯例,这些底层代码我们会归类为各自的包,并放置于 pkg 目录下。pkg 目录下的包,我们会尽量保持其独立性,这样方便在其他项目中复用。但是最重要的,当前还是以服务 goblog 项目为主。
    继续阅读

12月 28

快速 mac go 开发环境

  • 试试:
go version

go env
  • 配置
# 表示使用 go modules 模式
go env -w GO111MODULE=on

# 开启代理,方便下载包
go env -w GOPROXY=https://goproxy.cn,direct
  • 下载 goland 虽然 vscode,atom 等也可以用。可还是 goland 好用。下载破解版吧。

http://www.520xiazai.com/soft/GoLand-2020-for-mac.html