2.0 KiB
2.0 KiB
| aliases | tags | creation date | modification date |
|---|---|---|---|
| 2023-09-08 14:27 | 星期五 8日 九月 2023 14:27:29 |
go
设计哲学
- 追求简洁、优雅
- 垂直扩展:类型嵌入
- 水平扩展:接口
- 原生并发,轻量高效
- select | chanel 程序级扩展
- 面向工程,自带电池
项目工程
目录结构
- cmd
- internal
- pkg
- test
命名规范
- 包 小写,单个单词
- 包内的命名不建议含有包名
类型
任何类型都可以拥有方法
常量
无类型常量
对象 nil , 可直接调用函数 (单例模式)
反射
// emptyInterface is the header for an interface{} value.
type emptyInterface struct {
typ *rtype
word unsafe.Pointer
}
// rtype is the common implementation of most values.
// It is embedded in other struct types.
//
// rtype must be kept in sync with ../runtime/type.go:/^type._type.
type rtype struct {
size uintptr
ptrdata uintptr // number of bytes in the type that can contain pointers
hash uint32 // hash of type; avoids computation in hash tables
tflag tflag // extra type information flags
align uint8 // alignment of variable with this type
fieldAlign uint8 // alignment of struct field with this type
kind uint8 // enumeration for C
// function for comparing objects of this type
// (ptr to object A, ptr to object B) -> ==?
equal func(unsafe.Pointer, unsafe.Pointer) bool
gcdata *byte // garbage collection data
str nameOff // string form
ptrToThis typeOff // type for pointer to this type, may be zero
}
Doc
https://www.cntofu.com/book/73/ch2-cgo/ch2-09-static-shared-lib.md
CMD
go build -x F:\go\vulkan\cmd\main.go
CGO
go env -w CGO_ENABLED=1
set CGO_CFLAGS=-IF:\Coding\GoModule\cgo
set CGO_LDFLAGS=-LF:\Coding\GoModule\cgo -I:vulkan.lib
go build -o main.exe main.go
#C:\Users\Administrator\AppData\Roaming\go