如何優雅的入門golang

2021-09-11 12:52:27 字數 4729 閱讀 6038

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

print

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...