前端视角下的Go语法学习:基于 go 打印 hello-world
今日话题
使用 go 打印 hell world
作者:云层上的光
时间:2024年6月20日 18时04分14秒
主线任务
一、创建项目
1、创建 demo-hello-world 文件夹
mkdir demo-hello-world
2、进入 demo-hello-world 文件夹,声明 go.mod 文件
go mod init demo-hello-world
二、打印 hello world
1、新建 main.go 文件
2、修改 mian.go 文件
// 指明当前文件属于哪个包
package main
// 导入 fmt 包
import "fmt"
// 创建 main 方法
func main() {
// 打印 “你好,世界”
fmt.Println("你好,世界")
}
3、运行项目
4、终端输出打印
支线任务
一、package 是干什么的?
在 Go 语言中,package 关键字用于声明当前文件所属的包。每个 Go 源码文件都必须以 package 声明开头,指出该文件属于哪个包。2017年在学PHP的时候在后端包的概念这里绕晕了(白话就是:前端的模块化)
对比前端,以 Vue项目举例,功能如下:
1、新建 utils/indexjs 文件
// 定义了add 函数 并且使用了esmodules 模块化导出
export function add(a,b){
alert(a+b)
}
2、根目录 main.js 使用 utils 文件中 index.js
// 导入
import {add} from "./utils/index.js"
// 调用函数使用
console.log(add(1,2));
3、上面的功能用后端 package 来实现一遍:
代码如下:
package utils
import "fmt"
// 这里的 Add 要大写
func Add() {
fmt.Println("add")
}
4、main.go 文件中调用 Add 方法(注意这里一定要是大写的,应该要给外部调用)
5、运行项目
二、import 用于包导入?
1、当前文件只导入一个包时:
2、如果导入多个包,用 () 包裹起来
3、假设 getList 是 app.js 和 user.js 模块中导出的函数,那么前端中 as 功能:
import {getList as getAppList} from "@/api/app.js"
import {getList as getUserList } from "@/api/user.js"
4、在 go 实现如下:
三、如果包的层级越建越深应该怎么确定包的导入路径呢?
1、如果包的层级越来越深,是直接导入 "demo-hello-world/utils" 还是什么结果呢?
2、验证 index 是否是省略文件:
3、得出结论,和 index 无关
四、fmt 作用是?
1、fmt 包 好比 utils 的工具包一样,它是 go 的内置包 提供一些基础的 API
2、类比前端的 window
五、定义方法用 func
1、这玩意语法,在定义函数的时候我总是把 func 写成 function,前端代码的肌肉记忆
function main(){
alert("定义了一个main方法")
}
2、go 中优势是比前端少几个单词,可以很好的保护手关节
func main() {
// 打印 “你好,世界”
fmt.Println("你好,世界")
}
六、go的入口程序是 main 方法?
1、go 中确实规定了需要一个 main 包,一般也会直接定义在 main 文件中
2、那是否其他文件也可以定义 main 方法
3、小写命名的方法就好比是前端的私有属性方法,
const map = {
// 一般会有不成文的规定为 内部私有属性 不希望外部调用
_add(){
}
}
4、那我就好奇 大写的是给外部使用 这里两个方法会冲突吗?
代码仓库
往期内容
点击链接查看:www.yuque.com/chuxin-cs/i…
转载自:https://juejin.cn/post/7384977127219576882