golang的一些使用技巧

2021-09-22 23:04:45 字數 2517 閱讀 3237

1.列舉的實現

const (

freetime = 5

bettime = 9

opentime = 7

)

比如 定義位元組大小的列舉

const(

b = 1<<(10*iota) //1

kb                       //1024

mb                      //1024*1024

gb                       //1024*1024*1024

)

2.繼承

type father struct

var son struct

son.id

son.name

son.tuiduan

3.如何將乙個固定陣列轉換成切片.

var arry [32]byte

func changetoslice(btslice byte)

如果直接將變數arry作為引數傳入 changetoslice(arry), 則會提示 型別不匹配的情況.

解決方案:

changetoslice(arry[:])

4.如何高效插入乙個元素

//插入某元素

func copyinsert(slice inte***ce{}, pos int, value inte***ce{}) inte***ce{}

使用

var playerlist uint64 //玩家列表

playerlist = copyinsert(playerlist, len(playerlist), userid).(uint64) //這裡請強轉為自身型別

5.快速實現 基礎型別 的陣列成員 排序.

以 byte為例子

import "sort"

type playercards byte

//len()

func (s playercards) len() int

//less():由低到高排序

func (s playercards) less(i, j int) bool

//swap()

func (s playercards) swap(i, j int)

//呼叫

func sortcards(cards byte) byte
6.如何寫乙個單例.

// 管理類

type playermanger struct

// 單例實現

var once sync.once

var manger *playermanger = nil

func getplayermanger() *playermanger = make(map[uint64]*player)

})return manger

}

7.指標與 非指標的 成員函式呼叫

func (bc *blockchain)senddata(data string)

func (bc blockchain)senddatax(data string)

看下這兩個函式有什麼不同. 答案是肯定的,這兩個函式是相同的,只是可呼叫型別不同.

例項乙個指標

ptrblock := &blockchain{}

ptrblock.senddata(" 我是指標" ) //此時block屬性 == " 我是指標"

ptrblock.senddatax(" ***x" ) //此時block屬性 == " 我是指標" 無法改變

資料是無法新增到 bc的block陣列的當中的,因為很簡單. bc不是指標型別. 所以記得給相應的函式 乙個 靠譜的物件.

正解: 值傳遞無法改變成員內部資料,應該使用指標傳遞.

8  有快取chanel 和 無快取chanel的區別:

就一句話: 無快取chanel 要求chanel的讀取  和寫入 必須是併發執行. 

有快取時,一定是先寫入,再讀取. 無論是讀取 還是寫入.一旦快取滿了,就會阻塞.  等待另一邊拿走資料,或寫入新的資料. 如果快取未滿的時候,則不會阻塞.

例子

func readchan(ch chan int)

func writechan(ch chan int)

func main() 

}

//持續更新..

SlickEdit 一些使用技巧

slickedit 使用了幾天以後,發現不僅僅是自動提示,瀏覽,它提供的編輯功能也非常強大。如果說 sourceinsight 和 slickedit 在瀏覽 上面各有所長,那麼編輯這方面 se 和 si 就不是乙個級別了。下面是我知道的一些使用技巧,老鳥就不用看了,哈哈.1.如果發現路徑的 顯示成...

mysql 一些使用技巧

1.忘記root密碼,解決辦法 usr local mysql share mysql mysql.server stop mysql4 usr local mysql support files mysql.server stop mysql5 usr local mysql bin mysqld...

latex一些使用技巧

1.如何使連續的參考文獻能夠中間用破折號連起來?比如 6,7,8,9 變成 6 9 方法 在文件開始前加上下面的語句命令 usepackage numbers,sort compress 不但可以壓縮參考文獻標號,還可以進行排序,即無論正文裡面的順序怎樣,顯示出來都是先後順序。在elsevier模板...