Go-基本语法

2026/03/30

基本类型

类型传值方式能修改原数据?
int, float, string拷贝值需要传指针
array拷贝整个数组需要传指针
struct拷贝结构体需要传指针
pointer拷贝地址通过指针修改
slice拷贝头部可修改元素,append 不影响
map拷贝指针可以
channel拷贝引用可以

为什么 sliceappend 不影响?

slice 包括三部分:指针,长度,容量

传参时拷贝了这三部分,函数内 append 不会影响这三部分

func f(p []int) {
	p = append(p, 1)
}

func main() {
	var q = []int{1, 2, 3}
	f(q)
	fmt.Println(len(q))
	fmt.Println(cap(q))
}

包(package)

import (
	"github.com/0x3ea/KeyForge/internal/crypto"
	"github.com/0x3ea/KeyForge/internal/encode"
)

导入包时,实际上导入的是包的物理位置 调用时,实际上调用的是 .go 文件里的 package 声明

导出规则

Go 中所有标识符(变量、常量、函数、类型、方法)的可见性规则:

首字母可见性示例
大写公开(导出)IssuesURL
小写私有(未导出)issuesURL