一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言
温故知新
- 同一文件夹下的所有.go文件的package 必须一样.不一定和文件夹名相同
- 文件夹下可以有子文件夹,体现了package直接的上下级关系
- import 导入的路径是从src 子目录,到该包的实际存储位置的相对路径
多个工作区
- 意义?
- 定义方法
export GOPATH="/home/ferghs/gowork:/home/ferghs/gowork/src/project1"
- go get 默认是下载到第一个workspace
- 依赖关系
从第一个到最后一个按顺序寻找
模块私有访问权限 internal
- internal代码包中声明的公开程序实体仅能被该代码包的直接父包及其子包中的代码引用
import 另外一个用法
import . "packagename"
那么就会让这个“XXX”包中公开的程序实体被当前源码文件中的代码,视为当前代码包中的程序实体
{} 含义
- 空的代码块
- 表示不包含任何内容的数据结构(或者说数据类型)
1.1 interface{} 不包含任何方法定义的、空的接口类型
1.2 struct{} 代表了不包含任何字段和方法的、空的结构体类型 - 表示其值不包含任何元素
比如空的切片值[]string{},以及空的字典值map[int]string{}
类型别名与类型声明的区别
type D = int // 类型别名
type I int // 类型声明
类型别名和原类型完全一样,只不过是另一种叫法而已,而类型定义和原类型是不同的两个类型
package main
import "fmt"
type D = int
type I int
func main() {
v := 100
var d D = v // 不报错
var i I = v // 报错
fmt.Println(d)
fmt.Println(i)
}