golang基礎知識總結

2021-10-25 01:32:47 字數 2379 閱讀 8561

繼承通過結構體中的匿名字段實現,示例如下,add和sub引用了basenum結構體,所以add和sub是basenum的子類。

type add struct 

type sub struct

type basenum struct

如果乙個struct巢狀了另乙個匿名結構體,那麼這個結構可以直接訪問匿名結構體的方法,從而實現繼承

如果乙個struct巢狀了另乙個【有名】的結構體,那麼這個模式叫做組合

如果乙個struct巢狀了多個匿名結構體,那麼這個結構可以直接訪問多個匿名結構體的方法,從而實現多重繼承

封裝是把抽象出來的字段和對字段的操作封裝在一起,資料被保護在內部,程式的其它包只能通過被授權的方法,才能對欄位進行操作。

package main

import "fmt"

type person struct

func newperson(name string) *person

}//只能呼叫setage/getage/setsal/getsal才能對person下欄位進行操作

func (p *person) setage(age int) else

}func (p * person)getage() int

func (p *person)setsal(sal float64)else

}func (p *person)getsal() float64

func main()

陣列:具有相同型別且長度固定的一組資料序列,這組資料項序列對應存放在記憶體中的一塊連續區域中。

陣列包含index(下標),value,和長度

var s [3]string

s[0]="a"

s[1]="b"

s[2]="c"

var t = [3]string

for k,v :=range t

for i:=0;i切片結構包括:位址、長度和容量

長度:切片中實際存在的元素個數;

容量:從切片的起始元素開始到其底層陣列中的最後乙個元素的個數,一旦長度達到容量數,容量自動翻倍。

a := string{}

fmt.println(a,len(a),cap(a))

fmt.println(a,len(a),cap(a))

差異:切片是可變長度、可變容量

斷言:(type assertion)是乙個使用在介面值上的操作,用於檢查介面型別變數所持有的值是否實現了期望的介面或者具體的型別。

value, ok := x.(t)

其中,x 表示乙個介面的型別,t 表示乙個具體的型別(也可為介面型別)。

該斷言表示式會返回 x 的值(也就是 value)和乙個布林值(也就是 ok),可根據該布林值判斷 x 是否為 t 型別:

var x inte***ce{}

x = "hello"

value := x.(string)

fmt.println(value)

反射的乙個主要功能是檢查儲存在介面變數中的型別和值。

var i int

var j float64

i = 10

j =10

fmt.println(reflect.typeof(i),reflect.valueof(i),reflect.typeof(j),reflect.valueof(j))

w:=reflect.deepequal(i,j)

fmt.println(w)

int 10 float64 10

false

方法在定義的時候,會在func和方法名之間增加乙個引數,這個引數就是接收者,這樣我們定義的這個方法就和接收者繫結在了一起,稱之為這個接收者的方法,如下,string就是乙個方法,person的乙個方法。

type person struct 

func (p person) string() string

函式與方法的差異在於是否有接受者,如下add、sub就是函式(因為沒有接受者),而add因為是開頭小寫它的作用域只屬於所宣告的包內,即只能在當前宣告的包下使用,不能被其他包使用,而sub能夠被其他包引用。

func main() 

func add(a, b int) int

func sub(a, b int) int

golang 基礎知識2

1.defer panic recover defer golang的defer優雅又簡潔,是golang的亮點之一。defer在宣告時不會立即執行,而是在函式return後,再按照先進後出的原則依次執行每個defer,一般用於釋放資源 清理資料 記錄日誌 異常處理等。defer定義的內容必須在re...

Golang基礎知識 十安辰

sdk就是軟體開發工具包。做go開發之前,我們需要先安裝配置好sdk 編寫 就是敲 編譯 go build 原始碼檔案 生成.exe二進位制可執行檔案 執行 1 對於可執行檔案執行 exe 2 對於原始碼 go run 原始碼檔案 這種方式可以一步執行,但是寫大型專案時候速度較慢,不推薦,一般只用於...

Report Services 基礎知識總結

最近幾天在學習report service,看了好多,感覺幾天的了解連冰山一角都不及。不過以後要養成積累的習慣,回頭再忘了就尷尬了。總結 1.了解 報表的開發據目前所知,看業務大小,業務不大或者對這方面要求不是太高的,可以用vs裡帶的控制項reportviewer,根據指導設計新報表。反之,可能需要...