因?yàn)閏har *strings[]不是指針而是指針數(shù)組,那么
建安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
temp = strings[top];
strings[top] = strings[seek];
strings[seek] = temp;
這種交換交換的就是主調(diào)函數(shù)中的數(shù)組中的指針,把指向字符串的指針順序改變了,當(dāng)然按次序輸出就達(dá)到排序目的了……
Go中的binary包實(shí)現(xiàn)了簡(jiǎn)單的數(shù)字與字節(jié)序列的轉(zhuǎn)換以及變長(zhǎng)值的編解碼
package main
import ( "fmt" "bytes" "encoding/binary" ) func main(){ n := 0x12345678 bytesBuffer := bytes.NewBuffer([]byte{}) //BigEndian 大端順序存儲(chǔ) LittleEndian小端順序存儲(chǔ) binary.Write(bytesBuffer, binary.BigEndian, int32(n)) data:=bytesBuffer.Bytes() fmt.Printf("[0]: %#x addr:%#x\n",data[0],data[0]) fmt.Printf("[0]: %#x addr:%#x\n",data[1],data[1]) fmt.Printf("[0]: %#x addr:%#x\n",data[2],data[2]) fmt.Printf("[0]: %#x addr:%#x\n",data[3],data[3]) }
輸出
[0]: 0x12 addr:0xc042010248 [1]: 0x34 addr:0xc042010249 [2]: 0x56 addr:0xc04201024a [3]: 0x78 addr:0xc04201024b
也可以使用下面的方式
n := 0x12345678 var data []byte = make([]byte,4) //操作的都是無(wú)符號(hào)整型 binary.BigEndian.PutUint32(data,uint32(n))
可以使用下面的方式判斷當(dāng)前系統(tǒng)的字節(jié)序類型
const INT_SIZE int = int(unsafe.Sizeof(0))
//判斷我們系統(tǒng)中的字節(jié)序類型 func systemEdian() { var i int = 0x1 bs := (*[INT_SIZE]byte)(unsafe.Pointer(i)) if bs[0] == 0 { fmt.Println("system edian is little endian") } else { fmt.Println("system edian is big endian") } }
const NUM int = 100
for i := 0; i NUM; i += 1 {
rand.Seed(int64(i))
fmt.Printf("%d\t", rand.Int63n(int64(NUM)))
}
其實(shí)在循環(huán)里面這點(diǎn)時(shí)間間隔,納秒也是跟不上的。
還有,你用sleep的方法肯定是不能接受的?。?!
math/rand 中的所有整數(shù)函數(shù)都生成非負(fù)數(shù).
示例 main.go
執(zhí)行
同理,需要int64 int32類型的隨機(jī)數(shù)只要修改隨機(jī)函數(shù)
但是需要注意 math/rand 幾個(gè)函數(shù)的取值區(qū)間!如Intn的范圍[0, n)。[0,20),20會(huì)取不到
我自己的需求這樣寫已足夠