Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?
Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?
1、配置国内的Go模块的镜像
配置国内镜像代理(使用阿里云镜像)
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
验证 go env|grep GOPROXY
个人主机示例:
C:\**\**>go env GOPROXY
https://proxy.golang.org,direct # 查看原型的 代理URL
# 配置国内镜像代理(使用阿里云镜像)
C:\**\**>go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
# 查看验证 win10 应该使用 以下命令
C:\**\**>go env GOPROXY
https://mirrors.aliyun.com/goproxy/
C:\Users\z>
2、Go语言程序结构
package main // 文件所在包的包名(不局限于所在文件夹,与编译结果有关——也就是说,不管在哪一个文件夹下也可以 任意定义包名——不同于java的包路径限定)
import "fmt" // 这里 fmt 是 一个路径
func main() { // main 函数 无参数 无返回值
fmt.Println("hello, world") // fmt.Println 这里的 fmt 是 包名
}
// 整个 代码中没有 一个 分号做结尾 原因是 大多数分号都是可选的,常常被省略,不过在源码编译时,Go 编译器会自动插入这些被省略的分号。
3、gofmt
标准 Go 代码风格使用 Tab 而不是空格来实现缩进的,当然这个代码风格的格式化工作也可以交由 gofmt 完成。
Go 语言内置了一套 Go 社区约定俗称的代码风格,并随安装包提供了一个名为 Gofmt 的工具,这个工具可以帮助你将代码自动格式化为约定的风格。Gofmt 是 Go 语言在解决规模化(scale)问题上的一个最佳实践,并成为了 Go 语言吸引其他语言开发者的一大卖点。很多其他主流语言也在效仿 Go 语言推出自己的 format 工具,比如:Java formatter、Clang formatter、Dartfmt 等。
4、Go module
Go module 构建模式是在 Go 1.11 版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go 1.16 版本中,Go module 已经成为了 Go 默认的包依赖管理机制和 Go 源码构建机制。Go Module 的核心是一个名为 go.mod 的文件。
用法:
C:/**/*>go mod init XXXXX
# 初始化 "XXXX" 声明 module 路径(module path)
专栏示例:
$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
$cat go.mod
module github.com/bigwhite/hellomodule
go 1.16
相关说明: module 就是一个包的集合,这些包和 module 一起打版本、发布和分发。go.mod 所在的目录被我们称为它声明的 module 的根目录。不过呢,这个时候的 go.mod 文件内容还比较简单,第一行内容是用于声明 module 路径(module path)的。而且,module 隐含了一个命名空间的概念,module 下每个包的导入路径都是由 module path 和包所在子目录的名字结合在一起构成。
go mod tidy 命令,让 Go 工具自动添加 所依赖的第三方包
$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
... ...
执行 之后的 文件内容变化
module github.com/bigwhite/hellomodule
go 1.16
require (
github.com/valyala/fasthttp v1.31.0
go.uber.org/zap v1.19.1
)
注: 这是个人笔记 所以只记录了对本人有用或者本人觉得有意思的知识点,如果需要详细了解 可以购买相关专栏(绝对没有打广告的意思)该专栏刚刚上线,还未更新结束,本人只是想体验一下跟着专栏作者的更新进度来学习以及留言互动的这一个过程【手动狗头】

Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?的更多相关文章
- 留念 C语言第一课简单的计算器制作
留念 C语言第一课简单的计算器制作 学C语言这么久了. /* 留念 C语言第一课简单的计算器制作 */ #include<stdio.h> #include<stdlib.h ...
- Python之路第一课Day1--随堂笔记
课堂大纲: 一.Python介绍 二.发展史 三.Python 2 or 3? 四.安装 五.Hello World程序 六.变量 七.用户输入 八.模块初识 九..pyc是个什么鬼? 十.数据类型初 ...
- Go语言开发的第一步,安装开发环境编写第一个Go程序
关于go就不介绍了,google自己的语言.其它的百科,最近比较郁闷,处于纠结状态,不想说话,真心不想说话. 开发工具安装: 安装包下载: http://code.google.com/p/go/do ...
- C++语言第一课的学习
// HelloApp.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include ...
- Python之路第一课Day6--随堂笔记(面向对象 )
本节内容: 1. 面向对象编程介绍 2. 为什么要用面向对象进行开发? 3. 面向对象的特性:封装.继承.多态 4. 类.方法 一.面向过程 VS 面向对象 1. 编程范式 编程是 程序 员 用 ...
- Python之路第一课Day4--随堂笔记(迭代生成装饰器)
上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件 ...
- Python之路第一课Day5--随堂笔记(模块)
本节课程大纲: 1.模块介绍 2.time &datetime模块 3.random 4.os 5.sys 6.shutil 7.json & picle 8.shelve 9.xml ...
- Python之路第一课Day3--随堂笔记(文件操作)
一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...
- Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)
本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...
- Python之路第一课Day8--随堂笔记(socket 承接上节---网络编程)
本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...
随机推荐
- java中sleep与 yield 区别
1.背景 在多线程的使用中你会看到这个两个方法sleep()与yield()这两方法有什么作用呢? 请看下面案例演示 2.测试 package com.ldp.demo01; import com.c ...
- CF1992场题解
Only Pluses 算法:数学. 题意简述:有三个数,每次选择一个数 \(x\),使得 \(x\) 增加一,至多操作 \(5\) 次,最后求出这三个数的乘积最大值. 简单题,一眼秒了.考虑把这 \ ...
- 全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
全网最适合入门的面向对象编程教程:35 Python 的内置数据类型-文档字符串和__doc__属性 摘要: 在 Python 中,文档字符串(Docstring)是一种用于为模块.类.方法或函数编写 ...
- SMU Autumn 2023 Round 5
SMU Autumn 2023 Round 5 A. Everyone Loves to Sleep 把时间都转成分钟,然后存起来,二分找到离他睡觉点最近的一个时间段,减去他的睡觉点,如果最近的在第二 ...
- 初三年后集训测试---T1排序
初三年后集训测试 $T 1 $ 排序 $$HZOI$$ ·题意: 给定 \(4n\) 个整数,求 : \[\max\{\sum_{i=1}^{4n}(A_{i,1} \times A_{i,2} - ...
- Seata 1.3.0 Oracle 回滚测试验证 报错 ORA-02289: 序列不存在
使用Seata 1.3.0版本,测试A服务调用B服务,且A方法中,手动写了一个异常,测试是否正常回滚(Mysql已经测试过) 发现报错:ORA-02289: 序列不存在 一看就是undo_log这张表 ...
- [Udemy] AWS Certified Data Analytics Specialty - 4.Analysis
Kinesis Data Analytics Analytics 可以和 Lambda集成 RANDOM_CUT_FOREST, 异常检测算法 OpenSearch = ElasticSearch O ...
- VS Code 修改默认插件安装位置
先将扩展插件extensions从默认安装路径剪切到你真正想要存放的位置 将C:\Users\(用户名)\.vscode\extensions\剪切到存放的位置,此处以D:\extensions为例 ...
- NOIP 考前板子复习
点双 注意两个点,特判单点,是 son = 0 且 fa = 0,因为自环,还有弹栈弹到儿子节点处,因为点双不一定由割点弹出. code void dfs(int u, int la) { int s ...
- JavaScript – ES6-ES2023 大杂烩
前言 一年半没有写 JS 了, 今天开始来个大复习, 顺便把这么多年零零散散的知识点做成笔记. 练练字. ES 3, 5, 6, 2017, 2018... ES 6 等于 ES2015 ES 7 等 ...