golang基础
跨平台编译
export CGO_ENABLED=0 // 禁用CGO
export GOOS=linux // 目标平台是linux
export GOARCH=amd64 // 目标处理器架构是amd64
基本类型(Basic types):
bool
string
int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名 // 代表一个Unicode码
float32 float64
complex64 complex128
运算符:
按照优先级递减的顺序排列:
* / % << >> & &^
+ - | ^
== != < <= > >=
&&
||
bit位操作运算符,前面4个操作运算符并不区分是有符号还是无符号数:
& 位运算 AND
| 位运算 OR
^ 位运算 XOR // 二元运算符时是按位异或(XOR),当用作一元运算符时表示按位取反
&^ 位清空 (AND NOT) // 按位置零(AND NOT):如果对应y中bit位为1的话, 表达式z = x &^ y结果z的对应的bit位为0,否则z对应的bit位等于x相应的bit位的值
<< 左移 // 一个x<<n左移运算等价于乘以2^n
>> 右移 // 一个x>>n右移运算等价于除以2^n
主要格式化:
%d 十进制整数
%x, %o, %b 十六进制,八进制,二进制整数。
%f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00
%t 布尔:true或false
%c 字符(rune) (Unicode码点)
%s 字符串
%q 带双引号的字符串"abc"或带单引号的字符'c'
%v 变量的自然形式(natural format)
%T 变量的类型
%% 字面上的百分号标志(无操作数)
%p 地址
输出:
├── io.Writer # 标准流输出
│ ├── os.Stdout # 标准输出
│ ├── ioutil.Discard # 丢弃的流
│ └── http.ResponseWriter # http响应
基本类型:
// from type.go
const (
Invalid Kind = iota
Bool
Int
Int8
Int16
Int32
Int64
Uint
Uint8
Uint16
Uint32
Uint64
Uintptr
Float32
Float64
Complex64
Complex128
Array
Chan
Func
Interface
Map
Ptr
Slice
String
Struct
UnsafePointer
)
基本数据类型大小(单位:字节(byte))
bool: 1
int: 8
int8: 1
int16: 2
int32: 4
int64: 8
uint: 8
uint8: 1
uint16: 2
uint32: 4
uint64: 8
float32: 4
float64: 8
complex64: 8
complex128: 16
string: 16
pointer: 8
uintptr: 8
net/http流程
go object_relation:
调用脚本
github.com/codegangsta/gin
github.com/pilu/fresh
yaegi
tengo
gopher
otto
https://github.com/yuin/gopher-lua
https://github.com/traefik/yaegi
https://github.com/robertkrimen/otto