golang標準庫文件
高效能分布式系統開發、海量並行處理、遊戲服務端開發再好不過了
package main
import
"fmt"
func
main()
複製**
$ go run main.go
hello world!
複製**
識別符號用來命名變數、型別等程式體。乙個或者多個字母[a-za-z]
、數字[0-9]
、下劃線_
組成,但是第乙個字元必須為_或者字母
無效型別
型別型別
型別型別
break
default
func
inte***ce
select
case
defer
gomap
struct
chan
else
goto
package
switch
const
fallthrough
ifrange
type
continue
forimport
return
var型別
型別型別
型別型別
型別型別
型別型別
bool
byte
capclose
complex
complex64
complex128
uint16
copy
false
float32
float64
imag
intint8
int16
uint32
int32
int64
iota
lenmake
newnil
panic
uint64
println
real
recover
string
true
uint
uint8
uintptr
var b bool = true
var c bool = false
複製**
整型 int、浮點型 float32、float64,原生支援複數,其中位的運算採用補碼
型別型別
型別型別
uint8
uint16
uint32
uint64
int8
int16
int32
int64
float32
float64
complex64
complex128
byte
rune
uint
intuintptr
使用utf-8編碼標識unicode文字
var a = "世界你好"
var b string = "hello world"
var c bool
複製**
不帶宣告的只能在函式中體現
package main
var x, y int
var ( // 這種因式分解關鍵字的寫法一般用於宣告全域性變數
a int
b bool
)var c, d int = 1, 2
var e, f = 123, "hello"
//這種不帶宣告格式的只能在函式體**現
//g, h := 123, "hello"
func
main
()複製**
func
function_name
( [parameter list] ) [return_types]
複製**
var var_name [size] var_type
var blance [10] float32
// 初始化陣列
var blance = [10]int
複製**
指標變數是指向乙個值得記憶體位址 類似於變數和常量,在使用指標變數前也需要宣告這個指標
var ip *int
var fp *float32
var a int = 32
ip = &a
fmt.printf("a 變數的位址是: %x\n", &a) // 指標的位址
fmt.printf("*ip 變數的值: %d\n", *ip) // 指標的值
var var_name *var_type
複製**
當乙個指標被定義之後沒有賦值的話,它的值為nil nil指標也稱為空指標
// 定義乙個結構體
type struct_var_type struct
// 宣告結構體
var_name := struct_var_type
type books struct
// 宣告 book1 為 books 型別
var book1 books
book1.title = "go 語言"
book1.author = "ydl"
book1.subject = "go語言學習"
book1.book_id = 123
// 列印這個結構體
fmt.printf( "book 1 title : %s\n", book1.title)
fmt.printf( "book 1 author : %s\n", book1.author)
fmt.printf( "book 1 subject : %s\n", book1.subject)
fmt.printf( "book 1 book_id : %d\n", book1.book_id)
func
printbook
(book books)
// 結構體指標
var struct_pointer *books
struct_pointer = &book1
複製**
宣告乙個未定義長度的陣列
var var_name var_type
複製**
或者使用make()
來建立乙個切片
var slice1 type = make(type, len)
// or
slice1 := make(type, len)
// 初始化
slice1 := int
複製**
類似於python中的切片,取值
s := slice1[start:]
s := slice1[start:end]
s := slice1[:end]
複製**
未初始化的切片,為nil,長度為0
range 用於for迴圈中迭代陣列array、切片slice、通道channel、集合map等元素
var map_var_name map[key_data_type] var_type
// 使用make函式
map_var := make(map[key_data_type]var_type)
複製**
type_name(express)
把所有具有共性的方法放置在一起,任何其他型別只需要實現這些方法就實現了這個介面
/* 定義介面 */
type inte***ce_name inte***ce
/* 定義結構體 */
type struct_name struct
/* 實現介面方法 */
func
(struct_name_variable struct_name)
method_name1
() [return_type]
...func
(struct_name_variable struct_name)
method_namen
() [return_type]
複製**
errors.new("math: square root of negative number")
複製**
其實程式設計千變萬化不離其中,離不開基礎,而這些都是建築高樓大廈的基礎,很多人在開發過程中會遇到瓶頸,不知道如何提公升,其實我們可以再次複習以前學過的知識, 溫故而知新,讀一本書我們可以了解到這本書講的是什麼,第二次讀我們可以讀到更多,作者寫作意圖,融入作者的思維,跟隨作者置身其中,得到不一樣的感受。開發學習亦是如此, 多學習幾遍基礎,我們會有不一樣的感受,視野也會更加的廣闊,切勿浮躁,走馬觀花。熱門的框架學習固然重要,跟隨時代的潮流,不落伍。但是學習框架也是有跡可循的,在後面我會 介紹如何去學乙個框架,入門乙個框架,源**分析,思維導圖等等。
Golang的優雅重啟
更新 2015年4月 florian von bock 已將本文中描述的內容轉換為乙個名為 endless 的優秀go包 如果您有golang http服務,可能需要重新啟動它以公升級二進位制檔案或更改某些配置。如果你 像我一樣 因為網路伺服器處理它而優雅地重新啟動是理所當然的,你可能會發現這個配方...
如何優雅的入門LISP(一)
其實我不會lisp,以下內容都是我瞎編的 笑話一則 乙個間諜從nasa的主機盜取了乙個用lisp編寫的核心程式,為了證明自己說的是真話,他列印出了程式的最後一頁 lisp程式是由形式 form 排列起來構成的。它通過以下規則進行求值。1 符號 symbol 會被解釋為變數,求出該變數所繫結的值。2 ...
golang中的優雅中止
不過,業務中 總會存在對中止比較敏感的介面 比如支付相關 並且 總會存在一些帶狀態的服務,此時優雅中止就顯得比較重要了。本文通過乙個go 定時任務示例來簡單介紹 go 技術棧中優雅中止的處理思路。作為高可靠的服務平台,k8s 定義了終止 pod 業務程序在 pod 中執行 的基本步驟 當主動刪除 p...