Golang快速入门
最近给策略同事介绍了一下golang的基础语法
总体语法
- go语言的语句结尾不加分号
- 局部变量命名规则是驼峰命名
if,for后不使用括号
变量
初始化变量
count := 1
count = 2
foo := "hello"
rate := 1.0
使用:=初始化变量,go会自动推断变量类型。
var number int64
number = 100
var rate float64
rate = 0.88
指定变量类型初始化。
控制逻辑
if else
if distance > 1000 {
logger.Info("xxxxx")
return true
} else if distance > 100 {
logger.Info("xxxxx")
return true
} else {
logger.Info("xxxxx")
return false
}
go中的if后面不加括号
for
for i := 0; i < 100; i++ {
......
}
从1循环到100
数据结构
slice
类似C++中的vector
// 创建一个空slice
orderList := make([]int64, 0)
// 追加一个元素
orderList = append(orderList, 21948391392)
// 获取第一个元素
oid := orderList[0]
// 遍历
for idx, oid := range orderList {
...
}
需要注意,上面的idx是orderList下标,oid是slice中的值。类似python中的enumerate。
map
personAge := make(map[string]int64)
personMap["a"] = 18
personMap["b"] = 19
if personMap["a"] > personMap["b"] {
...
}
struct
type person struct {
name string
age int
}
p := person{name: "a"}
p.age = 36
if p.age > 35 {
...
}
数学运算符
加减乘除
和你想象的一样。
+
-
*
/
%
++
--
==
!=
>
<
>=
<=
&&
||
!
&
|
^
<<
>>
+=
-=
......
更多样例
- Hello World
- Values
- Variables
- Constants
- For
- If/Else
- Switch
- Arrays
- Slices
- Maps
- Range
- Functions
- Multiple Return Values
- Variadic Functions
- Closures
- Recursion
- Pointers
- Strings and Runes
- Structs
- Methods
- Interfaces
- Embedding
- Errors
- Goroutines
- Channels
- Channel Buffering
- Channel Synchronization
- Channel Directions
- Select
- Timeouts
- Non-Blocking Channel Operations
- Closing Channels
- Range over Channels
- Timers
- Tickers
- Worker Pools
- WaitGroups
- Rate Limiting
- Atomic Counters
- Mutexes
- Stateful Goroutines
- Sorting
- Sorting by Functions
- Panic
- Defer
- Recover
- Collection Functions
- String Functions
- String Formatting
- Text Templates
- Regular Expressions
- JSON
- XML
- Time
- Epoch
- Time Formatting / Parsing
- Random Numbers
- Number Parsing
- URL Parsing
- SHA1 Hashes
- Base64 Encoding
- Reading Files
- Writing Files
- Line Filters
- File Paths
- Directories
- Temporary Files and Directories
- Testing and Benchmarking
- Command-Line Arguments
- Command-Line Flags
- Command-Line Subcommands
- Environment Variables
- HTTP Clients
- HTTP Servers
- Context
- Spawning Processes
- Exec’ing Processes
- Signals
- Exit